Запрос на im.save в PIL Python - PullRequest
       11

Запрос на im.save в PIL Python

1 голос
/ 06 февраля 2011

Я использую im.load(), чтобы получить пиксели ORIGINAL_IMAGE.Впоследствии я сохраняю его

Я вижу, что все, что сохраняется, отличается от того, что я хотел сохранить -

Это фрагмент кода и вывод, который выделит мою проблему -

Фрагмент:

im = Image.open(ORIGINAL_IMAGE)
dup_im = im.copy()
pix = dup_im.load() 
dup_im.save(DUP_IMAGE)
saved_im = Image.open(DUP_IMAGE)
saved_pix = saved_im.load()

for i in range(10):
        print  pix[0, i], " : ", saved_pix[0, i]

Вывод печати -

ПЕРЕД СОХРАНЕНИЕМ: ПОСЛЕ СОХРАНЕНИЯ

$ python test.py 
162  :  162
162  :  162
162  :  163
162  :  163
162  :  163
164  :  162
160  :  161
159  :  160
155  :  153
155  :  155
$ 

Подробная информация о моей версии Python -

$ python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin

Есть идеи, почему два поля (пиксели до и после сохранения) не совпадают?

1 Ответ

6 голосов
/ 06 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...