从CMYK转换为RGB

7
我遇到了问题,无法将一个单页的CMYK格式的pdf转换成RGB格式的jpg。当我使用下面的代码时,生成的jpg图像颜色过于鲜艳。我尝试阅读Wand文档,但没有找到简单复制原始图像的方法。即使是官方的ImageMagick文档对我来说仍然不太透明。在我的情况下,必须在Python脚本内完成此操作。
以下是相关的代码片段。
with Image(filename = HOME + outFileName + ".pdf", resolution = 90) as original:
    original.format = "jpeg"
    original.crop(width=500, height=500, gravity="center")
    original.save(filename = HOME + outFileName + ".jpg")

我该如何准确地将CMYK转换为RGB?
更新:这里是样本PDF及其转换输出的链接。 原始PDF 转换为JPG

抱歉,我不知道Wand。即使直接在ImageMagick中进行此操作也有些棘手,正如这个问题所示。 - PM 2Ring
2
我手头没有太多的CMYK PDF文件可以测试,但你可以尝试在命令行中执行以下操作:convert someCMYK.pdf a.jpgconvert someCMYK.pdf -colorspace sRGB b.jpgconvert someCMYK.pdf -negate c.jpg,看看是否有任何一个文件[abc].jpg看起来不错? - Mark Setchell
你能发布一下你正在经历的“过于花哨”的问题和期望吗?使用从ocp.de获取的测试PDF所附带的相同代码可以得到正确的CMYK到RGB转换。 - emcconville
我更新了帖子并包含了示例。不幸的是,上面发布的代码除了颜色反转之外,与示例转换没有任何不同。 - Christopher Perry
2个回答

11

这个脚本会将图像转换成 RGB 并且保存在原地,如果它检测到这个图像是以 CMYK 模式存储的:

from PIL import Image
image = Image.open(path_to_image)
if image.mode == 'CMYK':
    image = image.convert('RGB')

5
我认为应该是 image = image.convert('RGB') - BachT
1
我不得不添加image.save(path_to_image)。没有它,它不能原地保存。 - Abdullah A Almsaeed

0

最终我解决了这个问题。

一个包含在PDF中的CMYK模式JPG图像必须被反转。

但是,在PIL中,不支持CMYK模式图像的反转。然后我使用numpy解决了这个问题。

完整的源代码在下面的链接中。 https://github.com/Gaia3D/pdfImageExtractor/blob/master/extrectImage.py

请查看166~170行。

imgData = np.frombuffer(img.tobytes(), dtype='B')
invData = np.full(imgData.shape, 255, dtype='B')
invData -= imgData
img = Image.frombytes(img.mode, img.size, invData.tobytes())
img.save(outFileName + ".jpg")

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