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);
setImageColorspace 只应在创建新图像时使用,通过 Imagick::newPseudoImage 或将 ImagickDraw 实例渲染到图像中。
对于现有图像,更改图像色彩空间的正确方法是Imagick::transformImageColorspace。
我正在 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);
setImageColorspace 只应在创建新图像时使用,通过 Imagick::newPseudoImage 或将 ImagickDraw 实例渲染到图像中。
对于现有图像,更改图像色彩空间的正确方法是Imagick::transformImageColorspace。