3

我正在尝试使用 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

4

4 回答 4

3

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

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

目前解决方案是使用不同版本的库。

于 2011-10-05T10:14:55.460 回答
2

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

于 2011-01-28T19:28:52.803 回答
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();
于 2011-04-04T14:40:05.127 回答
-2

见这里http://imagemagick.org/Usage/formats/#color_profile

转换 cmyk_image.jpg -colorspace rgb rgb_image.jpg

于 2011-04-12T10:59:26.040 回答