我使用PHP Imagick将PhantomJS中生成的PNG图像转换为TIF CMYK, 出于打印目的,我需要一个扁平的黑色(cmyk - 0,0,0,100) - 转换产生黑色像(cmyk - 58,49,44,89)。
我使用颜色配置文件转换图像(下面的代码部分) - >代码基于Convert image from RGB to CMYK with Imagick
可以用Imagick逼迫平坦的黑色吗?你知道其他可能有用的工具吗?
感谢,
if ($has_icc_profile === false) {
$icc_rgb = file_get_contents( '/srgb_profiles' . '/sRGB.icc');
$image->profileImage('icc', $icc_rgb);
unset($icc_rgb);
}
// then we add an CMYK profile
$icc_cmyk = file_get_contents( '/cmyk_profiles'.'/JapanColor2002Newspaper.icc');
$image->profileImage('icc', $icc_cmyk);
更新:
在网上查询后,我想我正在为ImageMagick寻找UCR en.wikipedia.org/wiki/Under_color_removal方法 - 我发现在色彩删除下支持转换旧版本
-undercolor <undercolor factor>x<black-generation factor>
control undercolor removal and black generation on CMYK images.
This option enables you to perform undercolor removal and black generation on CMYK images-- images to be printed on a four-color printing system. You can con- trol how much cyan, magenta, and yellow to remove from your image and how much black to add to it. The standard undercolor removal is 1.0x1.0. You'll frequently get better results, though, if the percentage of black you add to your image is slightly higher than the percentage of C, M, and Y you remove from it. For example you might try 0.5x0.7. (http://www.chemie.fu-berlin.de/chemnet/use/suppl/imagemagick/www/convert.html) -
显然该选项不再受支持了,如果有人知道UCR是否是我正在寻找的解决方案以及是否有人知道它是否得到支持,或者我是否支持,我感兴趣应该使用不同的方法来获得相同的结果。
答案 0 :(得分:0)
如果您在命令行中使用ImageMagick的convert
来生成灰度渐变,1像素宽,256像素高,从白色变为黑色并将其转换为CMYK颜色空间,然后将其显示为文本,你得到了你想要的东西:
convert -size 1x256 'gradient:rgb(255,255,255)-rgb(0,0,0)' -colorspace cmyk txt:
# ImageMagick pixel enumeration: 1,256,65535,cmyk
0,0: (0%,0%,0%,0%) #0000000000000000 cmyk(0,0,0,0)
0,1: (0%,0%,0%,0.392157%) #0000000000000101 cmyk(0,0,0,1)
0,2: (0%,0%,0%,0.784314%) #0000000000000202 cmyk(0,0,0,2)
0,3: (0%,0%,0%,1.17647%) #0000000000000303 cmyk(0,0,0,3)
0,4: (0%,0%,0%,1.56863%) #0000000000000404 cmyk(0,0,0,4)
0,5: (0%,0%,0%,1.96078%) #0000000000000505 cmyk(0,0,0,5)
0,6: (0%,0%,0%,2.35294%) #0000000000000606 cmyk(0,0,0,6)
0,7: (0%,0%,0%,2.7451%) #0000000000000707 cmyk(0,0,0,7)
0,8: (0%,0%,0%,3.13725%) #0000000000000808 cmyk(0,0,0,8)
0,9: (0%,0%,0%,3.52941%) #0000000000000909 cmyk(0,0,0,9)
0,10: (0%,0%,0%,3.92157%) #0000000000000A0A cmyk(0,0,0,10)
...
...
0,249: (0%,0%,0%,97.6471%) #000000000000F9F9 cmyk(0,0,0,249)
0,250: (0%,0%,0%,98.0392%) #000000000000FAFA cmyk(0,0,0,250)
0,251: (0%,0%,0%,98.4314%) #000000000000FBFB cmyk(0,0,0,251)
0,252: (0%,0%,0%,98.8235%) #000000000000FCFC cmyk(0,0,0,252)
0,253: (0%,0%,0%,99.2157%) #000000000000FDFD cmyk(0,0,0,253)
0,254: (0%,0%,0%,99.6078%) #000000000000FEFE cmyk(0,0,0,254)
0,255: (0%,0%,0%,100%) #000000000000FFFF cmyk(0,0,0,255)
你必须做一些不同的事情 - 也许这会帮助你解决问题。我猜这是你的ICC配置文件,但你可以尝试上面的命令。
如果你只想尝试点值,你可以让IM翻译一个像这样的像素:
convert -size 1x1 xc:#000000 -colorspace cmyk txt:
# ImageMagick pixel enumeration: 1,1,65535,cmyk
0,0: (0%,0%,0%,100%) #000000000000FFFF cmyk(0,0,0,255)
或者更简单地这样:
convert -size 1x1 xc:#000000 -depth 8 -colorspace cmyk txt:
# ImageMagick pixel enumeration: 1,1,255,cmyk
0,0: (0,0,0,255) #000000FF cmyk(0,0,0,255)
请注意以下内容:
您必须在命令行上将输入图像和输出图像名称之间的配置文件。
如果您的图像没有嵌入的配置文件,则您提供的第一个配置文件将应用于输入图像,第二个配置文件将应用于输出图像。如果输入图像确实具有配置文件,则您给出的第一个配置文件将应用于输出图像。