使用Pillow将CMYK转换为RGB的方法与Photoshop不同。

12

我需要在Python中将一张图像从CMYK转换为RGB。我使用Pillow这样做:

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

这段代码可以运行,但是如果我用 Photoshop 转换同一张图片,结果会与下面的图片不同:

a

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


Jgeg图像始终使用YCbCr作为颜色格式,因此这种转换是多余的 - 看起来Photoshop知道这一点,不会触及图像,但pillow在保存时会天真地压缩图像(添加压缩伪影)。 - janbrohl
2
同时,Pillow库可能没有考虑到嵌入的ICC配置文件,这会稍微改变图像的颜色。 - janbrohl
1个回答

16

已解决

问题在于 Pillow 不知道输入的 ICC 配置文件,而 Photoshop 默认有一个。

Photoshop 使用以下配置:

CMYK: U.S. Web Coated (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)
在 Windows 系统中,如果已安装,则可以在以下文件夹中找到配置文件:
C:\Windows\System32\spool\drivers\color\USWebCoatedSWOP.icc
C:\Program Files (x86)\Common Files\Adobe\Color\Profiles\Recommended\USWebCoatedSWOP.icc
C:\Program Files (x86)\Adobe\Acrobat DC\Resource\Color\Profiles\Recommended\USWebCoatedSWOP.icc

C:\Windows\System32\spool\drivers\color\sRGB Color Space Profile.icm
C:\Program Files (x86)\Common Files\Adobe\Color\Profiles\Recommended\sRGB Color Space Profile.icm
C:\Program Files (x86)\Adobe\Acrobat DC\Resource\Color\Profiles\Recommended\sRGB Color Space Profile.icm

我遇到了“无法打开配置文件”的错误。我猜我需要这些配置文件 *.icc。我应该在哪里找到它们? - akinuri
2
我想趁机将这些配置文件的路径添加进去,希望这样做没问题。 - akinuri
1
如果您还没有它们,可以在此处下载Adobe配置文件:https://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html - kgriffs
另外,请注意,在 macOS 上,您可以通过通用 CMYK 配置文件(在 Catalina 下的 /System/Library/ColorSync/Profiles/Generic CMYK Profile.icc 中)获得相当接近的效果。 - kgriffs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接