Search code examples
pythonpython-3.ximagepython-imaging-library

Convert png to jpeg using Pillow


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.

enter image description here

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 <module>
    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?


Solution

  • 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