Imagick 无法将 PDF 转换为 JPEG,但 ImageMagick 可以

Posted

技术标签:

【中文标题】Imagick 无法将 PDF 转换为 JPEG,但 ImageMagick 可以【英文标题】:Imagick can't convert PDF to JPEG but ImageMagick can 【发布时间】:2012-10-07 18:34:26 【问题描述】:

首先,我将 ImageMagick 与 Imagick php5 扩展结合使用了一段时间,完全没有问题,直到我不小心删除了 GhostScript。从那以后,我试图让它重新工作,但无济于事。

重新安装所有内容后,ImageMagick 能够将 PDF 转换为 JPEG。但是,当我运行 convert -list configure 时,我在 DELEGATE 列表中找不到 gs。当我运行convert sample.pdf[1] sample.jpg 时,它仍然可以完美运行。但是,当我通过 sudo apt-get install php5-imagick 重新安装 php5-imagick 扩展程序时,当我尝试将 PDF 转换为图像时会引发错误。

Fatal error: Uncaught exception 'ImagickException' with message 'no decode delegate for this image formatupload/guide.pdf'@error/constitute.c/ReadImage/533.`

它是由以下代码抛出的:

<?php
//header("Content-type: image/jpeg"); 
$img = new imagick("upload/guide.pdf[1]"); 
$img->setImageFormat("jpg");
echo $img; 
?>

我看不出问题出在哪里,因为 ImageMagick 本身工作正常,我想是 Imagick 不能很好地与 ImageMagick 交互。

【问题讨论】:

【参考方案1】:

我通过不通过 Ubuntu 存储库安装 Imagick 解决了这个问题。当我运行sudo apt-get autoremove php5-imagick 并尝试通过 pecl 安装它时,它抛出一个错误并说 Imagick 已经安装(这很奇怪,因为我卸载了它并重新启动了 apache)。

所以我通过sudo pecl uninstall imagick卸载它,然后使用sudo pecl install imagick重新安装它,然后将extension=imagick.so添加到php.ini,并再次重新启动apache。现在一切都恢复正常了。希望这能帮助遇到同样问题的人。

【讨论】:

以上是关于Imagick 无法将 PDF 转换为 JPEG,但 ImageMagick 可以的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中使用 imagick 将 .HEIC 转换为 JPEG

为啥 Imagick 类不能将 pdf 文件转换为图像文件?

ImageMagick/Imagick 使用原生 PHP API 将 PDF 转换为 JPG

有没有办法用golang将PDF转换为jpeg?

iText PDF;如何使用 Java 将 jpeg2000 转换为 jpg

在CentOS上为PHP安装Imagick和ImageMagick