Generación de paleta de 8 bits de PNG archivo a través de Python
-
02-10-2019 - |
Pregunta
¿Cuál sería la mejor biblioteca basada en Python para generar paleta de 8 bits desde el archivo .png dado. Como en la generación photoshop bajo formato .pal.
PS: Entrada PNG ya está en formato de 8 bits. (Paleta)
Regards
Solución
No he sido capaz de encontrar una especificación para .PAL (Photoshop llama "Microsoft PAL"), pero el formato es fácil de ingeniería inversa. Estos trabajos:
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()
Otros consejos
Si se trata de una imagen palletted a continuación, puede utilizar el método getcolors()
una vez que haya cargado en PIL. Si se trata de una imagen RGB o RGBA, entonces tendrá que hacer la reducción de color hasta que tenga 256 colores como máximo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow