Generazione della gamma di colori a 8 bit da png file tramite Python
-
02-10-2019 - |
Domanda
Quale sarebbe il miglior biblioteca basato pitone per la generazione di tavolozza a 8-bit dal dato file .png. Come nel generare Photoshop sotto formato pal.
PS: ingresso PNG è già in formato a 8 bit. (Tavolozza)
Saluti
Soluzione
Non sono stato in grado di trovare una specifica per .PAL (Photoshop chiama "Microsoft PAL"), ma il formato è facilmente reverse-engineering. Questo funziona:
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()
Altri suggerimenti
Se si tratta di un'immagine palletted quindi è possibile utilizzare il metodo getcolors()
dopo aver caricato in PIL. Se si tratta di un'immagine RGB o RGBA allora avrete bisogno di fare la riduzione del colore fino ad avere 256 colori al massimo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow