2017-06-21 57 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')