سؤال

ما الذي سيكون أفضل مكتبة قائمة على Python لإنشاء لوحة 8 بت من ملف .png المحدد. كما هو الحال في فوتوشوب توليد تحت تنسيق .pal.

ملاحظة: الإدخال PNG بالفعل بتنسيق 8 بت. (paletted)

يعتبر

هل كانت مفيدة؟

المحلول

لم أتمكن من العثور على مواصفات لـ .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