[PYTHON] J'ai réussi à convertir jpg en png car la transparence n'a pas été altérée

introduction

Même si je convertissais jpg en png avec python, je ne pouvais pas changer la transparence, donc je l'ai résolu de force

environnement

Convertissez simplement

Si vous google "python convertit jpg en png", vous verrez Pillow.

Installez comme ci-dessous en regardant le fonctionnaire

pip install Pillow

Si vous écrivez un exemple en référence à ici

jpgToPNG.py


from PIL import Image

#Le pass absolu est également possible
img = Image.open('input.jpg')
img.save('output.png')

Avec cela, le PNG peut être créé, mais si vous écrivez une source qui modifie la transparence, vous obtiendrez une erreur. À propos, la transparence de l'image convertie à l'aide de la peinture peut être ajustée correctement.

problème

Pendant un moment, si j'étais googlé en gémissant

Remarques sur la gestion des images png et jpg

Le site ci-dessus est un succès En effet, même si vous convertissez png en jpg, A de RGBA peut rester (est-il interprété correctement?), Donc c'est peut-être l'inverse.

Alors, créez une source à vérifier en vous référant au site ci-dessus

checkPNG.py


from PIL import Image

path_png1 = "output1.png " #La transparence ne peut pas être modifiée au format PNG
path_png2 = "output2.png " #Transparence PNG modifiable converti avec de la peinture

image = np.asarray(Image.open(path_png1))
print(Image.open(path_png1))
print(image.shape)
image = np.asarray(Image.open(path_png2))
print(Image.open(path_png2))
print(image.shape)

résultat


<PIL.PngImagePlugin.PngImageFile image mode=RGB size=1920x1080 at 0x1762DB300B8>
(1080, 1920, 3)
<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=1920x1080 at 0x176252F92B0>
(1080, 1920, 4)

Certes, les PNG qui ne peuvent pas être modifiés sont en mode RVB.

Solution

Maintenant que nous connaissons la cause, nous allons la résoudre.

Selon Notes sur la gestion des images png et jpg, vous pouvez changer le mode en ajoutant convert () après open ().

Alors, implémentez comme suit

jpgToPNG.py


from PIL import Image

rgba_img = Image.open('input.jpg').convert('RGBA')
rgba_img.save('output.png')
print(rgba_img)
print(np.asarray(rgba_img).shape)

résultat


<PIL.Image.Image image mode=RGBA size=1920x1080 at 0x1CF941EF9E8>
(1080, 1920, 4)

Il n'y a pas eu de problème avec le résultat et j'ai pu jouer avec la transparence en toute sécurité. c'est tout.

Recommended Posts

J'ai réussi à convertir jpg en png car la transparence n'a pas été altérée
Même si j'ai téléchargé du HTML avec boto3, il n'a pas été reconnu comme HTML
Le son émis par M. Tick sur le lieu de travail est ... J'ai réussi à le faire avec le code
Le fichier édité avec vim était en lecture seule, mais je veux le sauvegarder
J'ai réussi à le faire parce que la coutume de joindre un zip avec un mot de passe à un e-mail et de dire «Je vous enverrai le mot de passe séparément» est gênante.
Quand j'ai essayé de faire une communication socket avec Raspberry Pi, le protocole était différent
Ce que j'ai fait quand j'étais en colère de le mettre avec l'option enable-shared
C'était un peu difficile de faire flacon avec la version docker de nginx-unit
Un débutant a essayé de colorier un dessin au trait avec un chainer. J'ai pu le faire.
(Note) Je vais faire un tutoriel Django. Même si je suis le site, cela ne fonctionne pas.
[IOS] Animation GIF avec Pythonista3. J'en étais accro.
Un avertissement de plate-forme non sécurisé apparaît toujours avec l'installation de pip, mais je ne l'ai pas fait car c'était gênant.
L'éditeur Cloud Shell de GCP était encombré par l'environnement de développement Python, j'ai donc réussi à le reconstruire comme un terrain vacant.
Activé pour convertir PNG en JPG avec Pillow of Python
J'ai exécuté GhostScript avec python, divisé le PDF en pages et l'ai converti en image JPEG.
Je veux faire ○○ avec les Pandas
FBX SDK De quelles compétences ai-je besoin pour créer un programme à l'aide de Python?
Je veux le faire avec Python lambda Django, mais je vais m'arrêter
Lorsque j'ai essayé d'exécuter Python, j'ai été ignoré dans le Microsoft Store
J'ai installé PySide2, mais pyside2-uic ne fonctionnait pas, alors j'ai réussi à le faire.
Utilisez Python de Java avec Jython. J'étais aussi accro.
Que faire si le mnist d'exemple Chainer (Windows) se termine par WinError 183.
Que faire si l'installation de pyenv ne se poursuit pas avec une erreur
Que faire si le serveur ne démarre pas avec python manage.py runserver
Que faire si vous obtenez Impossible de récupérer l'URL 443 avec pip
L'histoire que j'ai traitée parce qu'Apache était en panne à AH00144
Je pensais que c'était la même chose que python, et j'étais accro au problème que l'interpréteur ruby ne démarre pas.
Dans IPython, quand j'ai essayé de voir la valeur, c'était un générateur, donc je l'ai inventé quand j'étais frustré.