【发布时间】:2020-09-27 21:21:46
【问题描述】:
我有几年前设置的这个位并且一直工作正常:
$imagick = new Imagick();
// Sets the image resolution
$imagick->setResolution(300, 300);
// Reads image from PDF
$imagick->readImage($pdf_here);
// apply CMYK profile before converting to RGB
$icc_cmyk = file_get_contents('../../profiles/CoatedGRACoL2006.icc');
$imagick->profileImage('icc', $icc_cmyk);
// convert to RGB using Adobe icc profile
$icc_rgb = file_get_contents('../../profiles/AdobeRGB1998.icc');
$imagick->profileImage('icc', $icc_rgb);
$imagick->setImageColorspace(Imagick::COLORSPACE_SRGB);
// crop to trim size
$imagick->cropImage(1050, 600, 37.5, 37.5);
// Writes an image
$imagick->writeImage($jpg_here);
但现在它决定不再工作了。 我正在生成一个使用 PMS 颜色的 CMYK PDF,如下所示:
而且它一直转换得很好,但现在它决定转换成这个:
我尝试上传不同的较新的 RGB 和 CMYK 配置文件,但没有成功,要么它没有什么不同,要么它反转了颜色。我对可能发生的变化完全不知所措。我根本没有改变这个文件。我一直在更新网站的其他方面,这些方面大约在 10 年前被编码为 MySQL 查询,需要使用准备好的语句更新到 mySQLi。
【问题讨论】:
-
在读取输入之前使用等效的-colorspace sRGB。
-
我在设置 $icc_cmyk 变量之前尝试过,它被锁定在处理中。
-
Ghostscript 无法正确读取 CMYK 图像。在读取图像之前使用配置文件是不正确的。它必须有一些工作要做,而您还没有阅读输入。但是您可以在读取输入之前使用 -colorspace sRGB。这告诉 ImageMagick 和 Ghostscript 在读取输入时将图像转换为 sRGB。见php.net/manual/en/imagick.setcolorspace.php
-
做到了。我不得不将它从 setImageColorSpace 更改为 setColorSpace。
标签: php imagemagick rgb cmyk