且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在python中使用Pillow将png转换为jpeg

更新时间:2023-01-18 15:05:22

你应该使用convert()方法:



图片

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

更多信息: http://pillow.readthedocs.io/en/latest/reference/Image .html#PIL.Image.Image.convert


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

Traceback (most recent call last):

  File "png_converter.py", line 14, in 

    bg.paste(image,(0,0),image)   File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1328, in paste

    self.im.paste(im, box, mask.im) ValueError: bad transparency mask

What am i doing wrong?

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