Python 打开jpg图像时更改颜色

Python 打开jpg图像时更改颜色,python,python-2.7,pillow,Python,Python 2.7,Pillow,我首先将此图像保存到本地计算机: 然后我尝试打开并用以下代码显示它: from PIL import Image img = Image.open('gipsy1.jpg') img.show() show显示的图像(或保存到新文件中的图像)与原始文件略有不同,因为可以在此处进行检查:。有没有办法避免这种情况 有关我的环境的一些信息: Python 2.7.10(默认值,2017年2月7日00:08:15)\n[GCC 4.2.1 兼容苹果LLVM 8.0.0(clang-800.0.34)

我首先将此图像保存到本地计算机:

然后我尝试打开并用以下代码显示它:

from PIL import Image
img = Image.open('gipsy1.jpg')
img.show()
show显示的图像(或保存到新文件中的图像)与原始文件略有不同,因为可以在此处进行检查:。有没有办法避免这种情况

有关我的环境的一些信息:

  • Python 2.7.10(默认值,2017年2月7日00:08:15)\n[GCC 4.2.1 兼容苹果LLVM 8.0.0(clang-800.0.34)]
  • 枕头4.1.1
  • Mac OS Sierra 10.12.5(16F73)

记录:此图像使用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')

也许这是由于jpg文件格式使用的有损压缩。如果改用无损格式(如png),会发生什么情况?如果将其保存到新文件,则会重新压缩,保存的文件将与原始文件不同。这是没有办法的。但是,我不明白你所说的当它通过
img.show()
显示时它的不同之处是什么意思。你拿它和什么做比较?@SiHa,它们在视觉上是不同的。原始文件中的颜色更生动。相比之下,看起来有些变化。差别不大,但最终用户对此表示不满。@Kevin,刚刚在这里测试过。同样的问题和同样的图像转换成png几乎是4倍大=/这两张截图在我看来差不多。是否可能是最终用户的显示器校准不良?两台显示器可能会以完全不同的方式显示相同的颜色。