#python #python-imaging-library #gif #jpeg
#python #python-imaging-library #gif #jpeg
Вопрос:
У меня вопрос о значениях пикселей, возвращаемых из изображения, открытого с помощью функции загрузки PIL. Я использую следующий код:
frame = Image.open(fname).load()
a = frame[10, 10]
Если я загружаю изображение GIF, a
это целочисленное значение 43. Но если я конвертирую изображение в JPEG и повторно запускаю код, a
получается кортеж (253, 254, 100)
.
Почему? И как я могу преобразовать (253, 254, 100)
обратно в 43?
Ответ №1:
GIF-файлы разбиты на палитры, тогда как JPEG-файлы имеют формат RGB. Процесс преобразования изображения приводит к удалению палитры, поэтому вам придется просмотреть записи палитры в GIF, чтобы найти наиболее близкое соответствие желаемому цвету.
Комментарии:
1. Для дальнейшего уточнения: изображение GIF содержит таблицу (до) 256 цветов. У каждого пикселя есть индекс в этой таблице (в вашем примере 10), который используется для определения его цвета. Файлы JPEG хранят значения RGB для каждого пикселя. Если вы посмотрите на запись 10 в таблице цветов GIF, она должна быть
(253, 254, 100)
(или очень близка к ней).