PHP IMagick RGB到CMYK反转?

时间:2011-01-28 16:15:17

标签: php rgb imagick cmyk

我正在尝试使用IMagick PHP模块将RGB .gif转换为CMYK .gif。

我写了这段代码

$i = new Imagick('mosaique.gif');
$i->setImageColorspace(Imagick::COLORSPACE_CMYK);
$i->setImageFormat('gif');
$i->writeImage('mosaique-cmyk.gif');

但结果“mosaique-cmyk.gif”仍然是RGB ......但是反色(O_O)

我做错了什么?

编辑:

我尝试使用.jpg并将图像转换为CMYK,但仍然是负片。

编辑2:

我试图在另一台服务器上运行我的脚本制作.pdf,但它运行正常。

IMagick中是否有任何已知错误? 是否有一些选项可以在php5库中设置?

返回反转图像的版本比正常工作的版本更新

错误的结果 PHP 5.3.3 IMagick 3.0.0RC1 ImageMagick 6.6.2

正确的结果 PHP 5.2.10 IMagick 2.1.1 ImageMagick 6.5.1

5 个答案:

答案 0 :(得分:3)

错误实际上是一个错误;)

我报告了,其他一些人已经证实了我的恐惧,现在它被分配给开发人员进行修复:http://pecl.php.net/bugs/bug.php?id=22184

此时解决方案是使用不同版本的库。

答案 1 :(得分:2)

GIF是256色格式,也就是“索引”。我不认为可以将gif保存为cmyk。 256种颜色中的每一种都是RGB值,但它不能存储完整的RGB色域。

答案 2 :(得分:1)

试试这个:

$im->stripImage();
$icc_cmyk_profile_path='image_functions/cmyk_icc_profiles/USWebUncoated.icc'; 
//[http://www.mattbeals.com/icc/][1]

$icc_cmyk = file_get_contents($icc_cmyk_profile_path);
$im->profileImage('icc', $icc_cmyk);
unset($icc_cmyk);
$colorspace=$im->getImageColorspace();                  

if ($colorspace==12) {
    echo "CMYK";
}

$im->stripImage();

$im->writeImage($destination);      
$im->clear();
$im->destroy();

答案 3 :(得分:0)

我解决了这个问题: 请访问此stackoverflow页面上的答案: Convert image from RGB to CMYK with Imagick

(凯文)

这是一个negateImage()问题。易于修复。

答案 4 :(得分:-2)

http://imagemagick.org/Usage/formats/#color_profile

  

转换cmyk_image.jpg -colorspace   rgb rgb_image.jpg