2011-02-06 681 views
1

我使用im.load()来获取ORIGINAL_IMAGE的像素。随后,我将它保存查询PIL中的im.save python

我看到,无论是保存从什么我想保存不同 -

这是一个代码片段,并输出将突出我的问题 -

段:

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 

任何想法,为什么这两个领域(像素前和保存后)是不一样的?

回答

6

我可以在加载JPG并将其另存为JPG时重新创建。虽然像素数据在保存为位图时是相同的。由于JPG是有损图像格式,保存会导致重新编码,从而改变像素数据。

+0

谢谢:)使用BMP工作 – sril 2011-02-06 17:24:35