簡體   English   中英

PIL Image.save導致錯誤的像素映射

[英]PIL Image.save results in incorrect pixel mapping

我試圖使用枕頭從JPEG讀取數據,然后將其保存到新圖像,但是,當我從新保存的圖像中讀取數據時,它與原始數據不對應!

這是腳本:

from PIL import Image

im1 = Image.open("original.jpg")
data1 = list(im1.getdata())

newim = Image.new("RGB", im1.size)
newim.putdata(data1)
newim.save("new.jpg")

im2 = Image.open("new.jpg")
data2 = list(im2.getdata())

for i in range(10):
    print data1[i], data2[i]

運行該命令后,輸出為:

(113, 191, 255) (114, 189, 254)
(113, 191, 255) (114, 189, 254)
(112, 190, 254) (114, 189, 254)
(112, 190, 254) (114, 189, 254)
(112, 190, 254) (114, 189, 254)
(112, 190, 254) (114, 189, 254)
(112, 190, 254) (114, 189, 254)
(112, 190, 254) (114, 189, 254)
(113, 191, 255) (115, 190, 255)
(113, 191, 253) (115, 190, 255)

這些值不應該相同嗎?

我正在使用python 2.7.9和枕頭2.7.0。

提前致謝。

“這些值不應該相同嗎?” 不能。JPEG是一種有損格式-這意味着在保存時,Jpeg編碼庫可以更改像素中的實際值-由於許多因素而可能有所不同-所需的jpeg質量是其中之一。

但是,如果您將新圖像保存為“ .png”文件,然后將其與從原始jpeg圖像讀取的圖像進行比較,則值應相同:使用相同庫讀取jpeg應該是確定性的(png也應如此)圖片)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM