Генерация 8 -битной палитры из PNG -файла через Python

StackOverflow https://stackoverflow.com/questions/3184821

Вопрос

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

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

С уважением

Это было полезно?

Решение

Я не смог найти спецификацию для .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()

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top