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

War es hilfreich?

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
scroll top