[英]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.