def force_to_palette(filename, donor_palette_filename): img = Image.open(filename) if donor_palette_filename: donor_img = Image.open(donor_palette_filename) palette = pilutils.decode_lousy_pil_palette_data(donor_img.palette.getdata()) print(donor_img.palette.getdata()) else: palette = find_palette(img) dst = Image.new("P", img.size) #dst.putpalette(donor_img.palette.getdata()[1]) dst.putpalette(todata(palette)) width, height = img.size for idx, pixel in enumerate(img.getdata()): colour = closest_match(pixel, palette) dst.putpixel((idx % width, idx // width), colour) return dst
def get_palette(donor_filename): img = Image.open(donor_filename) return pilutils.decode_lousy_pil_palette_data(img.palette.getdata())