关于PIL Python中im.save的查询

1 投票
1 回答
749 浏览
提问于 2025-04-16 11:20

我正在使用 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是一种有损的图片格式,保存的时候会重新编码,这样就会改变像素数据。

撰写回答