【问题标题】:Convert from CMYK to RGB从 CMYK 转换为 RGB
【发布时间】:2016-01-11 03:27:49
【问题描述】:

我在将单页 pdf (CMYK) 转换为 jpg (RGB) 时遇到问题。当我使用下面的代码时,jpg 图像中的颜色很花哨。我试过通读 Wand 文档,但没有找到任何可以简单地复制原始图像的东西。官方 ImageMagick 文档本身对我来说仍然相当不透明。对于我的情况,有必要在 python 脚本中执行此操作。

下面是相关代码sn-p。

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 及其转换输出的链接。

Original PDF

Converted to JPG

【问题讨论】:

  • 对不起,我不知道魔杖。甚至直接在 ImageMagick 中执行此操作看起来也有些棘手,正如 this question 所示。
  • 我没有很多 CMYK PDF 可供测试,但您可以在命令行中尝试以下操作,可能是 convert someCMYK.pdf a.jpgconvert someCMYK.pdf -colorspace sRGB b.jpg 以及 convert someCMYK.pdf -negate c.jpg,看看是否有[abc].jpg 你觉得好看吗?
  • 你能发布你正在经历和期待的“花哨”吗?使用来自ocp.de 的测试 PDF 发布的相同代码会产生正确的 CMYK 到 RGB 转换。
  • 我更新了帖子以包含示例。不幸的是,上面发布的代码与示例转换没有任何不同,除了反转颜色。

标签: python linux python-3.x imagemagick wand


【解决方案1】:

如果检测到图像处于CMYK 模式,此脚本会将图像转换为RGB 并原地保存:

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

【讨论】:

  • 我觉得应该是image = image.convert('RGB')
  • 我必须添加image.save(path_to_image)。没有它,它就无法就地保存。
【解决方案2】:

最后我解决了这个问题。 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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2020-05-31
    • 2021-03-15
    • 2023-03-25
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多