我有一个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");
以下是图片:
- 原文 - Download File
- 重新抽样
任何想法为什么会发生这种情况?
我尝试从原始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);
对此的任何想法都将受到高度赞赏!
谢谢!