Imagick将CMYK JPG转换为PNG和透明度

时间:2015-04-29 15:03:21

标签: php png jpeg imagick cmyk

我有一个CMYK JPG文件,我需要从中删除一些部分,然后保存到CMYK PNG文件中。问题是,即使我只是打开JPG文件并将其保存到PNG文件中,颜色也会大量移动。我一直在努力解决这一问题,并且已经耗尽了SO和Google上的所有可用资源。

这是我的代码:

$imageStick = new Imagick("original.jpg"); // CMYK JPG

$largeStick = new Imagick(); // create a bigger PNG file with transparent background
$largeStick->newImage($smallStick->getimagewidth(), $smallStick->getimageheight() * 3, new ImagickPixel('transparent'), 'png');

$largeStick->compositeimage($smallStick, Imagick::COMPOSITE_DEFAULT, 0, 0);

$largeStick->writeimage("resampled.png");

以下是图片:

Original - 原文 - Download File

Resampled - 重新抽样

任何想法为什么会发生这种情况?

我尝试从原始jpg文件中复制所有可能的配置文件和图像属性:

foreach ($smallStick->getimageprofiles() as $name => $profile)
    !empty($profile) && $largeStick->setimageprofile($name, $profile);

foreach ($smallStick->getimageproperties() as $name => $property)
    !empty($profile) && $largeStick->setimageproperty($name, $property);

$largeStick->setcolorspace($smallStick->getcolorspace());

手动设置ICC配置文件,但根本没有运气:

$icc_cmyk = file_get_contents('USWebUncoated.icc');
$largeStick->profileImage('icc', $icc_cmyk);

对此的任何想法都将受到高度赞赏!

谢谢!

0 个答案:

没有答案