2017-06-21 54 views
0

我第一次保存此圖片我的本地機器更改顏色時jpg圖片打開

from PIL import Image 
img = Image.open('gipsy1.jpg') 
img.show() 

通過節目中顯示的圖像(或保存到新文件中)與原始文件略有不同,因爲可以在這裏查看:http://imgur.com/9TAPiqx。有什麼辦法可以避免這種情況?

我的環境中的某些信息:

  • 的Python 2.7.10(默認情況下,2017年2月7日,0時08分15秒)\ n [GCC 4.2.1兼容 蘋果LLVM 8.0.0(clang- 800.0.34)
  • 枕頭4.1.1
  • 的Mac OS塞拉利昂10.12.5(16F73)
+0

這或許是由於JPG文件格式使用有損壓縮。如果使用無損格式(如png),會發生什麼情況? – Kevin

+0

如果將它保存到一個新文件中,則它將被重新壓縮,並且保存的文件將與原始文件不同。這是沒有辦法的。但是,我不明白當你用'img.show()'顯示它時會有什麼不同。你在比較什麼? – SiHa

+0

@SiHa,它們在視覺上有所不同。原始文件中的顏色更鮮豔。對比看起來有些變化。這不是一個很大的區別,但最終用戶正在抱怨。 –

回答

0

對於記錄:此圖像使用ICC顯示P3的空間,這是隻支持新的蘋果產品和其他一些高端顯示器。如果我們強制ICC達到sRGB,我們會得到更好的結果。

下面的代碼工作正常:

from PIL import Image 
img = Image.open('gipsy1.jpg') 
import tempfile 
from PIL import ImageCms 
icc = tempfile.mkstemp(suffix='.icc')[1] 
with open(icc, 'w') as f: 
f.write(img.info.get('icc_profile')) 
srgb = ImageCms.createProfile('sRGB') 
img = ImageCms.profileToProfile(img, icc, srgb) 
img.save('new_srgb_gipsy1.jpg')