关于PIL Python中im.save的查询
我正在使用 im.load()
来获取原始图像的像素。然后,我把它保存了。
但是我发现,保存下来的内容和我想要的完全不一样。
下面是一个代码片段和输出,能更清楚地说明我的问题:
代码片段:
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
我发现当我加载一个JPG图片,然后再保存成JPG格式时,会出现这个问题。不过,如果我把它保存成位图格式,像素数据是一样的。因为JPG是一种有损的图片格式,保存的时候会重新编码,这样就会改变像素数据。