from PIL import Image
img = Image.open('1.png')
img.save('2.png')
Pierwszy obraz ma przezroczyste tło, ale kiedy go zapisać, przejrzystość znika (tło jest białe)PIL nie zapisuje przejrzystość
Co robię źle?
from PIL import Image
img = Image.open('1.png')
img.save('2.png')
Pierwszy obraz ma przezroczyste tło, ale kiedy go zapisać, przejrzystość znika (tło jest białe)PIL nie zapisuje przejrzystość
Co robię źle?
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.
Zawsze można wymusić typ do "RGBA"
img = Image.open('1.png')
img.convert('RGBA')
img.save('2.png')
Oczywiście, ale w ten sposób nie będzie generował tego samego obrazu, co oryginalny, z formatu mądry. –
+1. Ahh tak, bardzo prawdziwy Lucas S. –
Udało się, dziękuję! Jednak dziwne, że te właściwości nie zostały automatycznie zapisane. –