Генерация 8 битной палитры из png файла через Python - PullRequest
1 голос
/ 06 июля 2010

Какая библиотека на основе Python является лучшей для создания 8-битной палитры из заданного файла .png.Как и при создании фотошопа в формате .pal.

PS: входной PNG уже в 8-битном формате.(в палитре)

С уважением

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Мне не удалось найти спецификацию для .PAL (Photoshop называет это «Microsoft PAL»), но формат легко перепроектировать. Это работает:

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()
1 голос
/ 06 июля 2010

Если это изображение на поддоне, вы можете использовать метод getcolors(), как только загрузите его в PIL.Если это изображение RGB или RGBA, вам нужно будет уменьшить цвет, пока не получите максимум 256 цветов.

...