2009-08-05 10 views

Odpowiedz

30

Prawdopodobnie obraz jest indeksowany (tryb "P" w PIL), więc przezroczystość nie jest ustawiona w kanale alfa PNG, ale w informacjach o metadanych.

można uzyskać przejrzysty indeks tło palety z następującego kodu:

from PIL import Image 

img = Image.open('1.png') 
png_info = img.info 
img.save('2.png', **png_info) 

Informacje o zdjęciu jest słownikiem, więc można sprawdzić je, aby zobaczyć informacje o tym, że ma:

np: Jeśli wydrukować go dostaniesz wyjście jak następuje:

{'transparency': 7, 'gamma': 0.45454, 'dpi': (72, 72)} 

informacje zapisane tam będą się różnić w zależności od narzędzia, które stworzył oryginalny PNG, ale to, co jest importan t dla ciebie tutaj jest klawisz "przejrzystości". W tym przykładzie mówi, że indeks palety "7" musi być traktowany jako przezroczysty.

+0

Udało się, dziękuję! Jednak dziwne, że te właściwości nie zostały automatycznie zapisane. –

4

Zawsze można wymusić typ do "RGBA"

img = Image.open('1.png') 
img.convert('RGBA') 
img.save('2.png') 
+5

Oczywiście, ale w ten sposób nie będzie generował tego samego obrazu, co oryginalny, z formatu mądry. –

+0

+1. Ahh tak, bardzo prawdziwy Lucas S. –