Bonjour,
Encore débutant en Python, je programme une petite application destinée à réaliser des cartes à partir de tableau. En fait, je cherche à appliquer simplement un masque sur un fond de carte. Je ne sais pas si c'est très clair: par exemple, à partir d'un fond de carte vierge des régions françaises, je veux une Île-de-France en bleu, une Aquitaine en rouge, une Alsace en brun... pour obtenir quelque chose comme ça (lien pris au hasard sur Google):
Je vais faire ancien combattant, mais à l'époque ou je programmais en assembleur 68000 sur Amiga, j'aurais simplement collé l'image de la région que je veux colorier sur le fond de carte, avec la couleur d'arrière-plan transparente. En tout cas, je reprends l'idée.
J'ai donc cherché, trouvé PIL et sa fonction paste.
Pour tester, j'ai fait à partir du tutorial:
Tout bête, et ça marche, sauf qu'évidemment, le blanc autour de l'image de l'Aquitaine efface le fond de carte (quoiqu'il soit traité en 'transparent' sur l'image GIF.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 # -*- coding: iso-8859-1 -*- import Image im = Image.open("P:\Personnel\BMP2GIF\FRANCE.GIF") region = Image.open("P:\Personnel\BMP2GIF\AQUITAINE.GIF") box=(0,0,151,177) im.paste(region,box) im.show()
J'ai voulu essayer le paramètre de masque de 'paste', mais ça ne marche pas et je ne comprends pas le message d'erreur:
Y a-t-il un autre moyen ? Où une autre bibliothèque comme matplotlib (pas très compréhensible pour moi, d'ailleurs) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 >>> im.paste(region, box=box, mask=128) Traceback (most recent call last): File "<pyshell#23>", line 1, in <module> im.paste(region, box=box, mask=128) File "C:\Fichiers\Python\lib\site-packages\PIL\Image.py", line 1073, in paste mask.load() AttributeError: 'int' object has no attribute 'load'
Merci de vos réponses.
Partager