【问题标题】:IMagick RGB to CMYK corrupt conversionIMagick RGB 到 CMYK 损坏的转换
【发布时间】:2015-03-31 12:04:47
【问题描述】:

我正在使用 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);

图片:

Original

Converted

我在一个循环中转换了大约 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::transformImageColorspace()。"
  • 工作。还修复了反转颜色的问题。所以不需要否定Image。您能否将其发布为 anwser,以便我接受。

标签: php rgb imagick corrupt cmyk


【解决方案1】:

setImageColorspace 只能在创建新图像时使用,无论是通过 Imagick::newPseudoImage 还是将 ImagickDraw 实例渲染到图像中。

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

【讨论】:

    猜你喜欢
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    • 2016-01-11
    • 2012-11-29
    • 1970-01-01
    • 2012-02-06
    相关资源
    最近更新 更多