0

我正在使用 PHP 的 Imagick 扩展来操作图像。以下是我的代码

try{
    $sourceimg=dirname(__FILE__)."\\source.jpg";
    $destinationimg=dirname(__FILE__)."\\source_cmyk.tiff";
    $im=new Imagick();
    $im->setResolution(300,300);
    $im->readImage($sourceimg);
    $im->setImageColorSpace(imagick::COLORSPACE_CMYK);
    $im->stripImage();
    $cmykprofile=@file_get_contents("C:\\USWebUncoated.icc");
    $im->profileImage("icm",$cmykprofile);
    $im->setImageDepth(8);
    $im->setImageUnits(1); //0=undefined, 1=pixelsperInch, 2=PixelsPerCentimeter
    $im->setResolution(300,300); //set output resolution to 300 dpi
    $im->setImageCompressionQuality(100);
    $im->writeImage($destinationimg);

}catch(ImagickException $e){
    echo $e->getMessage();
}

我遇到的问题是代码否定了原始图像。仅当我使用$im->profileImage. 造成这种情况的原因是什么?以及如何解决这个问题?我使用的配置文件是我从http://www.adobe.com/support/downloads/detail.jsp?ftpID=3680下载的 cmyk 颜色配置文件

任何帮助将不胜感激。

谢谢

4

1 回答 1

0

如果您使用具有专门颜色配置文件的图像或非 RGB 图像(例如 CMYK JPEG),您应该首先将它们转换为 sRGB。

使用条带配置文件,您也可以剥离ICC 颜色配置文件。大多数浏览器使用 gamma 2.2(默认)显示您的剥离图像,这与 CMYK 不同。

您的问题的解决方案在用户提供的注释中:http ://www.php.net/manual/en/imagick.setimagecolorspace.php

于 2014-01-21T22:19:27.857 回答