指定された .png ファイルから 8 ビット パレットを生成するための最適な Python ベースのライブラリは何でしょうか。.pal 形式で生成する Photoshop の場合と同様です。
PS: 入力 PNG は既に 8 ビット形式です。(パレット)
よろしく
指定された .png ファイルから 8 ビット パレットを生成するための最適な Python ベースのライブラリは何でしょうか。.pal 形式で生成する Photoshop の場合と同様です。
PS: 入力 PNG は既に 8 ビット形式です。(パレット)
よろしく
.PAL(Photoshopでは「MicrosoftPAL」と呼んでいます)の仕様を見つけることができませんでしたが、形式は簡単にリバースエンジニアリングされます。これは機能します:
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 色になるまで減色を行う必要があります。