【问题标题】:PHP Imagick CMYK PDF convert to JPGPHP Imagick CMYK PDF 转换为 JPG
【发布时间】:2012-02-06 18:25:36
【问题描述】:

我使用 Imagick 将 pdf 转换为 JPG。问题是 pdf 是 CMYK 格式,生成的 jpg 的颜色与 pdf 的颜色略有不同。我使用以下代码来实现结果:

$filelist = array("D3807797-8425-5-1_40.pdf[2]","D3807797-8425-5-1_40.pdf[3]");

$all = new Imagick();

foreach($filelist as $file){
    $im = new Imagick($file);       
    $all->addImage($im);

}

$all->resetIterator();
$combined = $all->appendImages(true);


$combined->setImageFormat("jpg");
$combined->writeImage("test.jpg");

我也为此尝试了一个 linux 命令

$cmd = "gm convert -density 150x150 {$pdf}[2] {$pdf}[3] -append -quality 100 {$image}";
exec($cmd)

我得到了同样的结果。

有人可以帮我解决这个问题吗? 提前致谢。

【问题讨论】:

  • 从 CMYK 转换为 RGB 时,“略有不同”的声音与预期一致。你能举个例子吗? PDF 中的图像是否附有颜色配置文件?
  • @Pekka ,我编辑并放置了 pdf 和图像的链接。
  • CMYK 到 RPG 无法做到 100% 准确。您可以在您的网站上做的最好的事情是让注释颜色可以不同,并链接到 PDF。
  • @TopenerIt 可能是可能的,但问题是我必须将 pdf 发送到一个地方但截屏另一个地方,但它们必须相同。
  • @Centurion 问题是 CMYK 颜色无法映射到 RGB 1:1。为了尝试并获得相似的结果,需要有一个颜色配置文件。正确处理这件事相当复杂,不知道该建议什么...除非尝试使用颜色配置文件(如果传入数据中有可用的颜色配置文件)。

标签: php image pdf cmyk


【解决方案1】:

我无法确定有什么不同(我个人认为图像和 pdf 之间没有太大区别)。但一个很好的可能性是用于将 CMYK 通道转换为 RGB 的转换例程。 PDF 使用以下公式:

  • red = 1 - min(1, cyan + black)
  • 绿色 = 1 - 分钟(1,品红色 + 黑色)
  • 蓝色 = 1 - min(1, 黄色 + 黑色)

还有其他公式可以产生不同的结果,也许您的工具使用的转换不是 PDF 标准中规定的。

请注意,在指定的 PDF 文件中,我确实看到使用了 DeviceRGB 和 DeviceCMYK;一切都是基于矢量的,没有图像。

【讨论】:

    最近更新 更多