Convert png to jpeg using Pillow in python

匿名 (未验证) 提交于 2019-12-03 02:14:01

问题:

I am trying to convert png to jpeg using pillow. I've tried several scrips without success. These 2 seemed to work on small png images like this one.

First code:

from PIL import Image import os, sys  im = Image.open("Ba_b_do8mag_c6_big.png") bg = Image.new("RGB", im.size, (255,255,255)) bg.paste(im,im) bg.save("colors.jpg") 

Second code:

image = Image.open('Ba_b_do8mag_c6_big.png') bg = Image.new('RGBA',image.size,(255,255,255)) bg.paste(image,(0,0),image) bg.save("test.jpg", quality=95) 

But if I try to convert a bigger image like this one

i'm getting

What am i doing wrong?

回答1:

You should use convert() method:

from PIL import Image  im = Image.open("Ba_b_do8mag_c6_big.png") rgb_im = im.convert('RGB') rgb_im.save('colors.jpg') 

more info: http://pillow.readthedocs.io/en/latest/reference/Image.html#PIL.Image.Image.convert



回答2:

The issue with that image isn't that it's large, it is that it isn't RGB, specifically that it's an index image.

Here's how I converted it using the shell:

>>> from PIL import Image >>> im = Image.open("Ba_b_do8mag_c6_big.png") >>> im.mode 'P' >>> im = im.convert('RGB') >>> im.mode 'RGB' >>> im.save('im_as_jpg.jpg', quality=95) 

So add a check for the mode of the image in your code:

if not im.mode == 'RGB':   im = im.convert('RGB') 


回答3:

You can convert the opened image as RGB and then you can save it in any format. The code will be:

from PIL import Image im = Image.open("image_path") im.convert('RGB').save("image_name.jpg","JPEG") #this converts png image as jpeg 

If you want custom size of the image just resize the image while opening like this:

im = Image.open("image_path").resize(x,y) 

and then convert to RGB and save it.

The problem with your code is that you are pasting the png into an RGB block and saving it as jpeg by hard coding. you are not actually converting a png to jpeg.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!