recorrer por negro matriz imagenes imagen convertir blanco python image python-3.x pillow

por - Convierte png a jpeg usando Pillow in python



imagenes en python (3)

Deberías usar el método convert ():

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

más información: http://pillow.readthedocs.io/en/latest/reference/Image.html#PIL.Image.Image.convert

Estoy tratando de convertir png a jpeg usando una almohada. He intentado varios scrips sin éxito. Estos 2 parecían funcionar en pequeñas imágenes png como esta.

Primer codigo

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")

Segundo código:

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)

Pero si intento convertir una imagen más grande como esta.

Me estoy poniendo

Rastreo (llamadas recientes más última):

Archivo "png_converter.py", línea 14, en

bg.paste (imagen, (0,0), imagen) Archivo "/usr/lib/python2.7/dist-packages/PIL/Image.py", línea 1328, en pegar

self.im.paste (im, box, mask.im) ValueError: máscara de transparencia incorrecta

¿Qué estoy haciendo mal?


El problema con esa imagen no es que sea grande, es que no es RGB, específicamente que es una imagen de índice.

Así es como lo convertí usando el 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)

Así que agregue un cheque para el modo de la imagen en su código:

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


Puede convertir la imagen abierta como RGB y luego puede guardarla en cualquier formato. El código será:

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

Si desea un tamaño personalizado de la imagen, simplemente cambie el tamaño de la imagen mientras abre de esta manera:

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

y luego convertir a RGB y guardarlo.

El problema con su código es que está pegando el png en un bloque RGB y guardándolo como jpeg mediante codificación. en realidad no estás convirtiendo un png a jpeg.