Я использую PHP Imagick для преобразования изображений PNG, сгенерированных в PhantomJS, в TIF CMYK, для печати Мне нужен плоский черный (cmyk - 0,0,0,100) - преобразование генерирует черные (например, cmyk - 58,49,44,89)).
Я конвертирую изображения с помощью цветового профиля (раздел моего кода ниже) → код основан на преобразовании изображения из RGB в CMYK с помощью 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);
ОБНОВИТЬ:
после проверки онлайн я думаю, что я ищу UCR en.wikipedia.org/wiki/Under_color_removal метод для ImageMagick - я обнаружил, что конвертировать старые версии, поддерживаемые при удалении цвета
-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 решением, которое я ищу, и если кто-нибудь знает, поддерживает ли он, или я должен использовать другой метод для получения того же результата.
Если вы используете 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)
Обратите внимание на следующее:
Вы должны поместить профили между входными изображениями и именами выходных изображений в командной строке.
Если ваше изображение не имеет встроенного профиля, первый профиль, который вы даете, применяется к входному изображению, а второй - к выходному изображению. Если ваше входное изображение имеет профиль, первый профиль, который вы даете, применяется к выходному изображению.