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

¿Fue útil?

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