IMagick RGB到CMYK的转换损坏


IMagick RGB to CMYK corrupt conversion

我正在用PHP中的IMagick将图像从RGB转换为CMYK。

在转换过程中,一些图像会出现黑色网格。

代码:

$IMagick = new IMagick();
$IMagick->clear();
$IMagick->readImage(SITE_ROOT . 'userfiles/image/products/' . $image); 
$IMagick->negateImage(false, Imagick::CHANNEL_ALL);
$IMagick->setImageColorspace(13);
$icc_cmyk = file_get_contents(dirname(__FILE__).'/USWebCoatedSWOP.icc'); 
$IMagick->profileImage('icc', $icc_cmyk); 
unset($icc_cmyk); 
$IMagick->setImageColorspace(12);
$IMagick->writeImage (SITE_ROOT . 'userfiles/image/products/cmyk/' . $image);

图片:

原始

转换后的

我在一个循环中转换了大约80个图像,其中大多数都还可以。知道为什么会这样吗?

编辑:工作代码:

$IMagick = new IMagick();
$IMagick->clear();
$IMagick->readImage(SITE_ROOT . 'userfiles/image/products/' . $image); 
$icc_cmyk = file_get_contents(dirname(__FILE__).'/USWebCoatedSWOP.icc'); 
$IMagick->profileImage('icc', $icc_cmyk); 
unset($icc_cmyk); 
$IMagick->transformImageColorspace(12);
$IMagick->writeImage (SITE_ROOT . 'userfiles/image/products/cmyk/' . $image);
只有通过Imagick::newPseudoImage或将ImagickDraw实例渲染到图像中创建新图像时,才应使用setImageColorspace。

对于现有图像,更改图像颜色空间的正确方法是Imagick::transformImageColorspace。