2016-08-09 42 views
5

我需要在python中将图像从CMYK转换为RGB。我用枕头以这样的方式从CMYK到RGB与枕头转换不同于Photoshop的

img = Image.open('in.jpg') 
img = img.convert('RGB') 
img.save('out.jpg') 

代码工作,但如果我转换相同的图像用Photoshop我有一个不同的结果,如下图所示: -

a

唯一的操作来完成在Photoshop中是将方法从CMYK更改为RGB。 为什么两个RGB图像之间存在这种差异?它可能是一个颜色配置文件问题?

+0

Jgeg图像始终使用[YCbCr](https://en.wikipedia.org/wiki/YCbCr)作为[颜色格式](https://en.wi kipedia.org/wiki/JPEG#Encoding),所以这种转换是多余的 - 它看起来像Photoshop知道这一点,并没有触及图像,但枕头天真地压缩图像正常保存(添加压缩文物) – janbrohl

+2

也枕头可能不会采取嵌入[ICC配置文件](https://en.wikipedia.org/wiki/ICC_profile)考虑改变图像的颜色。 – janbrohl

回答

6

解决

的问题是,枕头不知道输入ICC配置文件,而Photoshop中有一个设置为默认值。

Photoshop中使用了

CMYK:美国网络涂层(SWOP)V2

RGB:sRGB的IEC61966-2.1

所以我已经解决了这种方式:

img = Image.open('in.jpg') 
img = ImageCms.profileToProfile(img, 'USWebCoatedSWOP.icc', 'sRGB Color Space Profile.icm', renderingIntent=0, outputMode='RGB') 
img.save('out.jpg', quality=100)