PHP Imagick (ImageMagick) RGB> CMYK с плоским черным

0

Я использую 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 решением, которое я ищу, и если кто-нибудь знает, поддерживает ли он, или я должен использовать другой метод для получения того же результата.

Теги:
image-processing
image
imagemagick
cmyk

1 ответ

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)

Обратите внимание на следующее:

  1. Вы должны поместить профили между входными изображениями и именами выходных изображений в командной строке.

  2. Если ваше изображение не имеет встроенного профиля, первый профиль, который вы даете, применяется к входному изображению, а второй - к выходному изображению. Если ваше входное изображение имеет профиль, первый профиль, который вы даете, применяется к выходному изображению.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню