Association d'image

cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 - 29 avril 2005 à 16:54
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 - 2 mai 2005 à 14:07
Bonjour,

j'ai une application qui utilise Python (jusque là tout va bien) et wxPython



je voudrais savoir s'il est possible (sans utiliser PIL) de combiner des images Bitmap

je m'explique j'ai une image qui me sert d'image de fond pour mes
boutons et je voudrais ajouter dessus d'autre image ( des sortes
d'icone quoi) et le faire à la volée si possible



si quelqu'un à une idée...



Merci

6 réponses

cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 5
2 mai 2005 à 11:56
j'ai trouvé un début de solution avec la fonction wxImage.Paste()

qui permet le collage d'une image dans une autre.(cette fonction
n'était pas dans le fichier d'aide de wxPython , mais je l'ai trouvé
sur le site wxPython)



maintenant second problème, ma 2e image étant un gif elle contient une
zone transparente, il ne faudrait pas la coller où la considéré comme
un mask mais je ne sais pas comment faire...
0
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 3
2 mai 2005 à 13:09
essai de passer par les dc ( les canvas ) voici ce que j'ai trouve sur wxpython.org :



wxDC::Blit



bool Blit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
wxDC* source, wxCoord xsrc, wxCoord ysrc, int logicalFunc = wxCOPY,
bool useMask false , <gras>wxCoord xsrcMask </gras> -1, wxCoord ysrcMask = -1)



Copy from a source DC to this DC, specifying the destination
coordinates, size of area to copy, source DC, source coordinates,
logical function, whether to use a bitmap mask, and mask source position.



je crois qu'il existe une methode sur les objet visuel qui renvoice
DC, ainsi tu pourras peindre tes deux images sur le composant de ton
choix.

sinon tu peux aller voir a cette adresse il y a une doc spécifique a python pur wx et la fonction paste y est référencée.
0
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 3
2 mai 2005 à 13:10
bon euh sans commentaire voici l'adresse :

http://www.wxpython.org/docs/api/
0
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 5
2 mai 2005 à 13:14
Merci

je vais voir ce que ça donne, sinon j'ai trouvé (je pense) une méthode qui fonctionne mais un peu lourde, qui consiterai à composer moi même mon image pixels par pixels mais si je pouvais créer un mask ça serait aussi bien ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
taz_iup Messages postés 179 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 21 mai 2014 3
2 mai 2005 à 13:16
ok tiens nous au courant
0
cs_DoudouBidou Messages postés 102 Date d'inscription jeudi 29 mai 2003 Statut Membre Dernière intervention 23 juin 2008 5
2 mai 2005 à 14:07
Finalement je vais rester sur ma méthode car je la comprends bien et c'est plus rapide que ce que je pensais:



la fonction ci-dessous permet de "combiner" 2 images GIF en supprimant
la couleur de transparence de l'image du dessus (soit la couleurRGB
(255,0,255))

on peut également ajuster la position de la 2nd image grace à l'offset



les images d'entrée doivent être des wx.Image



def joinImage(im1,im2,offsetx=0,offsety=0):

stopx = im2.GetWidth()

if stopx > (im1.GetWidth()-offsetx):

stopx = im1.GetWidth()-offsetx

stopy = im2.GetHeight()

if stopy > (im1.GetHeight()-offsety):

stopy = im1.GetHeight()-offsety

if stopx>0 and stopy>0:

for x in range(0,stopx):

for y in range(0,stopy):


rgb2 = (im2.GetRed(x,y),im2.GetGreen(x,y),im2.GetBlue(x,y))

if rgb2 !=(255,0,255):


im1.SetRGB(x+offsetx,y+offsety,rgb2[0],rgb2[1],rgb2[2])

return im1
0
Rejoignez-nous