from PIL import Image
img = Image.open('1.png')
img.save('2.png')
La primera imagen tiene un fondo transparente, pero cuando lo guardo, la transparencia se ha ido (fondo es blanco)PIL no guarda la transparencia
¿Qué estoy haciendo mal?
from PIL import Image
img = Image.open('1.png')
img.save('2.png')
La primera imagen tiene un fondo transparente, pero cuando lo guardo, la transparencia se ha ido (fondo es blanco)PIL no guarda la transparencia
¿Qué estoy haciendo mal?
Probablemente la imagen está indexada (modo "P" en PIL), por lo que la transparencia no se establece en el canal alfa PNG, sino en la información de metadatos.
, usted puede obtener índice de paleta de fondo transparente con el siguiente código:
from PIL import Image
img = Image.open('1.png')
png_info = img.info
img.save('2.png', **png_info)
Imagen es un diccionario, para que pueda inspeccionarlo para ver la información que tiene:
por ejemplo: si imprimirlo obtendrá una salida como la siguiente:
{'transparency': 7, 'gamma': 0.45454, 'dpi': (72, 72)}
la información se guarda allí variará dependiendo de la herramienta que creó el PNG original, pero lo que es importan t para usted aquí es la clave de "transparencia". En el ejemplo, dice que el índice de paleta "7" debe tratarse como transparente.
siempre se puede forzar el tipo de "RGBA",
img = Image.open('1.png')
img.convert('RGBA')
img.save('2.png')
Por supuesto, pero de esa forma no generará la misma imagen que la original, desde el formato en cuestión. –
+1. Ahh sí, muy cierto Lucas S. –
Funcionó, gracias! Aunque es extraño que esas propiedades no se hayan guardado automáticamente. –