Die Erzeugung von 8-Bit-Palette von PNG-Datei über Python
-
02-10-2019 - |
Frage
Was ist die beste Python basierte Bibliothek zum Erzeugen von 8-Bit-Palette aus der gegebenen .png-Datei wäre. Wie in Photoshop Erzeugen unter .pal Format.
PS: Input PNG ist bereits in 8-Bit-Format. (Paletted)
Viele Grüße
Lösung
Ich habe nicht in der Lage gewesen, eine Spezifikation für .PAL (Photoshop nennt es „Microsoft PAL“) zu finden, aber das Format ist leicht Reverse Engineering. Dies funktioniert:
def extractPalette(infile,outfile):
im=Image.open(infile)
pal=im.palette.palette
if im.palette.rawmode!='RGB':
raise ValueError("Invalid mode in PNG palette")
output=open(outfile,'wb')
output.write('RIFF\x10\x04\x00\x00PAL data\x04\x04\x00\x00\x00\x03\x00\x01') # header
output.write(''.join(pal[i:i+3]+'\0' for i in range(0,768,3))) # convert RGB to RGB0 before writing
output.close()
Andere Tipps
Wenn es ein palettierte Bild ist, dann können Sie die getcolors()
Methode benutzen, wenn Sie es in PIL geladen haben. Wenn es ein RGB- oder RGBA-Bild ist dann müssen Sie die Farbreduktion tun, bis Sie 256 Farben haben bei den meisten.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow