PIL простая вставка изображения - изменение цвета изображения - PullRequest
0 голосов
/ 03 сентября 2018

Я пытаюсь вставить изображение на другое, используя:

original = Img.open('original.gif')
tile_img = Img.open('tile_image.jpg')
area = 0, 0, 300, 300
original.paste(tile_img, area)
new_cropped.show()

Это работает, за исключением того, что вставленное изображение меняет цвет на серый.

Изображение до:

enter image description here

Изображение после:

enter image description here

Есть ли простой способ сохранить тот же цвет вставленного изображения? Я пытался прочитать другие вопросы и документацию, но не могу найти объяснения, как это сделать.

Большое спасибо

1 Ответ

0 голосов
/ 03 сентября 2018

Я полагаю, что все изображения GIF имеют палитру - то есть, вместо того, чтобы содержать триплет RGB в каждом месте, они содержат индекс в палитру триплетов RGB. Это экономит место и повышает скорость загрузки - за счет разрешения использовать только 256 уникальных цветов на изображение.

Если вы хотите обрабатывать GIF (или файл PNG с палитрами) как RGB, вам необходимо убедиться, что вы конвертируете его в RGB при открытии, иначе вы будете работать с индексами палитры, а не с триплетами RGB.

Попробуйте изменить первую строку на:

original = Img.open('original.gif').convert('RGB')
...