2010-07-06 3 views
1

주어진 .png 파일에서 8 비트 팔레트를 생성하는 데 가장 적합한 파이썬 기반 라이브러리는 무엇입니까? .pal 형식으로 생성하는 Photoshop에서와 같이.파이썬을 통해 png 파일에서 8 비트 팔레트 생성

PS : 입력 PNG는 이미 8 비트 형식입니다.

감사

+0

png 파일이 이미 팔레트 있습니까? 아니면 진정한 색깔입니까? – slurdge

+0

설명을 위해 질문을 편집했습니다. – Hellnar

+0

그건 전혀 "생성"하지 않습니다; 그것은 단지 "추출"입니다. – Nyerguds

답변

2

.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() 
+0

은 매력처럼 작동합니다. 감사합니다. – Hellnar

1

당신이 PIL로로드 일단 당신이 getcolors() 방법을 사용할 수있는 palletted 이미지의 경우를 (에서는 팔레트). RGB 또는 RGBA 이미지라면 최대 256 색까지는 색상 줄이기가 필요합니다.

+0

Ignacio 제안에 감사드립니다.이 방법의 .pal 팔레트 버전을 생성하는 방법은 무엇입니까? 감사합니다 – Hellnar

+0

나는 그 파일 형식이 어떻게 생겼는지 전혀 모른다. 나는 결국 당신이'struct'를 사용할 필요가 있다고 생각합니다. –

관련 문제