Question

Quelle serait la meilleure bibliothèque à base de python pour générer la palette 8 bits à partir du fichier .png donné. Comme dans la génération photoshop sous le format .pal.

PS: entrée PNG est déjà en format 8 bits. (Palettisée)

Cordialement

Était-ce utile?

La solution

Je n'ai pas été en mesure de trouver une spécification pour .PAL (Photoshop appelle « Microsoft PAL »), mais le format est facilement à l'ingénierie inverse. Cela fonctionne:

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()

Autres conseils

Si c'est une image palletted vous pouvez alors utiliser la méthode getcolors() une fois que vous avez chargé dans PIL. Si c'est une image RVB ou RGBA alors vous aurez besoin de faire réduire la couleur jusqu'à ce que vous avez 256 couleurs au maximum.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top