Je suis en train de prototyper un processeur d'image en Python 2.7 en utilisant PIL1.1.7 et je voudrais que toutes les images se retrouvent au format JPG. Les types de fichiers d'entrée incluront tiff, gif, png avec ou sans transparence. J'ai essayé de combiner deux scripts que j'ai trouvés: 1. convertir d'autres types de fichiers en JPG et 2. supprimer la transparence en créant une image blanche vierge et coller l'image originale sur le fond blanc. Mes recherches sont spammées avec des gens qui cherchent à générer ou préserver la transparence plutôt que le contraire.PIL Convertir PNG ou GIF avec transparence en JPG sans
Je travaille actuellement avec ceci:
#!/usr/bin/python
import os, glob
import Image
images = glob.glob("*.png")+glob.glob("*.gif")
for infile in images:
f, e = os.path.splitext(infile)
outfile = f + ".jpg"
if infile != outfile:
#try:
im = Image.open(infile)
# Create a new image with a solid color
background = Image.new('RGBA', im.size, (255, 255, 255))
# Paste the image on top of the background
background.paste(im, im)
#I suspect that the problem is the line below
im = background.convert('RGB').convert('P', palette=Image.ADAPTIVE)
im.save(outfile)
#except IOError:
# print "cannot convert", infile
Les deux scripts fonctionnent en vase clos, mais comme je les ai-je obtenir un combiné ValueError: Mask Bad transparence.
Traceback (most recent call last):
File "pilhello.py", line 17, in <module>
background.paste(im, im)
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1101, in paste
self.im.paste(im, box, mask.im)
ValueError: bad transparency mask
Je pense que si je devais enregistrer un PNG sans transparence, je pourrais alors ouvrir ce nouveau fichier, et ré-enregistrer en tant que JPG, et supprimer le PNG qui a été écrit sur le disque, mais je suis En espérant qu'il existe une solution élégante que je n'ai pas encore trouvée.
Pourquoi penseriez-vous le problème est lorsque le code est Barfing sur le '.paste()' et ne pas même arriver à cette ligne? – kindall