![Linux下如何通过命令行生成CMYK图像?](https://linux22.com/image/18839/Linux%E4%B8%8B%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%94%9F%E6%88%90CMYK%E5%9B%BE%E5%83%8F%EF%BC%9F.png)
我开发了一个应用程序,它通过 imageMagic 生成带有文本的 RGB PNG 图像,如下所示:
convert -size 1000x1000 -density 300 xc:white -pointsize 24 \
-fill "rgb(0,0,0)" -annotate +500+500 'Josh Test' Jtest.png
效果很好。然而,我也需要能够生成 CMYK 输出,相同的图像,但采用 CMYK 而不是 RGB。 InkScape 无法做到这一点。我想我可以只使用 CMYK 颜色:
convert -colorspace cmyk -density 300 xc:white -pointsize 24 \
-fill "cmyk(0,0,0,0)" -annotate +500+500 'Josh Test' Jtest.pdf
然而,生成的图像不是 100% 黑色,而是 100% 青色、100% 品红色、100% 黄色和 0% 黑色。实际颜色看起来更糟。这是因为ImageMagic 在 RGB 空间中进行所有绘图并转换为 CMYK:
绘图需要RGBA颜色模型。在内部,图像存储为 RGB(A) 或 CMY(A)K。
我无法生成 RGB 图像并转换为 CMYK,颜色不正确。它们必须自始至终都是 CMYK。 linux下如何生成CMYK图像?
答案1
保存一个 python 脚本,如下所示:
#!/usr/bin/python
from PIL import Image, ImageFont, ImageDraw
import sys
im = Image.new('CMYK', (1000,1000), (0, 0, 0, 255))
f = ImageFont.load_default()
d = ImageDraw.Draw(im)
d.text((500, 500), sys.argv[1], font = f, fill = (0, 0, 0, 0))
del d
im.save(sys.argv[2])
依赖项是 python 和 python 成像库。然后您可以使用以下命令创建图像:
python cmyktext.py "Josh test" Jtest.pdf
不要忘记 cmyk 是减法,所以 (0,0,0,0) 实际上是白色。当然也可以使用您喜欢的任何字体,如文档所示这里。