web-dev-qa-db-fra.com

impossible d'écrire en mode RGBA au format JPEG

J'apprends à utiliser 'pillow 5.0', le livre suivant 'Automatisez le truc ennuyeux avec du python'

L'information sur l'objet image

In [79]: audacious = auda
In [80]: print(audacious.format, audacious.size, audacious.mode)
PNG (1094, 960) RGBA

Lorsque j'ai essayé de convertir un type de fichier, il signale une erreur.

In [83]: audacious.save('audacious.jpg')
OSError: cannot write mode RGBA as JPEG

Il n'y a pas une telle erreur dans le livre.

14
user9062604

JPG ne supporte pas la transparence - RGBA signifie Red, Green, Blue, Alpha - Alpha est transparence .

Vous devez supprimer le canal Alpha ou enregistrer sous un format compatible avec la transparence, comme PNG.

La classe image- a une méthode convert qui peut être utilisée pour convertir RGBA en RBG - après quoi vous pouvez utiliser JPG.

Regardez ici: le doku de classe d'image

im = Image.open("audacious.png")
rgb_im = im.convert('RGB')
rgb_im.save('audacious.jpg')

Adapté de: https://stackoverflow.com/a/43258974/7505395

38
Patrick Artner