我在让ImageMagick和Ghostscript协同工作时遇到了麻烦--从安装到测试,再到实际使用软件,一切似乎都很困难。有谁有什么建议吗?
发布于 2011-11-30 12:30:17
我刚刚花了过去的三个小时让ImageMagick很好地发挥与PHP的PDF到JPG的转换。而不是自己在本地记录,我想我应该把它写在这里,所有的流行语和我搞砸的事情,这样下一个菜鸟可以节省一些时间。
在两个操作系统上测试,Windows7 x64和Vista x64,PHP5.2.8和Apache2.2.11。
您将需要Ghostscript和ImageMagick。我找到gs871w64.exe
和ImageMagick-6.6.3-0-Q16-windows-x64-dll.exe
了。
执行ImageMagick的基本安装(我现在将其称为IM )。仔细检查系统path变量,以确保您可以从任何地方进行IM。它应该指向IM目录。在cmd
:convert test.gif test.jpg
中使用下面这一行测试安装(假设您有test.gif
)。工作正常。
测试PDF convert (convert test.pdf test.jpg
)。您应该会收到一条关于"gswin32c.exe“、"Postscript delegate failed”和"missing an image filename“的长消息。这意味着即时通信工具找不到PDF“翻译器”。你需要Ghostscript。
安装Ghostscript (我现在称它为GS )。出于某种原因,我不得不做了两次才成功。将GS文件夹中的'bin‘地址添加到系统变量中。使用gswin32 test.pdf
测试安装,您应该会在GS查看器中看到您的文件弹出。重要提示: Windows不能在 ('gs' is not recognized as an internal or external command, operable program, or batch file.
)中运行。您需要使用gswin32。
回到IM测试:convert test.pdf test.jpg
现在应该可以工作了。
现在转到PHP -写下这个脚本:
$out = shell_exec("convert blah.pdf blah2.jpg 2>&1");
echo $out;
2>&1
will move all errors into the standard output,这样您就可以更好地诊断问题:)。现在,您的PHP脚本可以在cmd提示符下运行,但是在浏览器中运行时什么也不会发生。拍拍你的额头,然后重启Apache。
我知道,它很详尽,可能也很初级。但是一个有希望有帮助的总结,大约20页半有帮助的线索。
发布于 2015-08-23 13:56:50
Steve已经提供了一个从PHP运行ImageMagick命令行版本的指南。在经历了安装ImageMagick扩展版本的类似经历之后,我想详细说明一下不同组件是如何协同工作的。
Imagick ( PHP扩展)
首先,您需要PHP扩展。它基本上是PHP和ImageMagick函数之间的适配器。
Copy or >从扩展名中选择一个版本在体系结构(可能是32位)、线程安全性和编译器(VC9或VC11)方面与您的版本相匹配,请参阅phpinfo
php_imagick.dll
from extension ZIP to 然而,这还不够。php_imagick.dll
不包含任何ImageMagick功能,并且与扩展捆绑在一起的CORE_RL_...
DLL不完整。您还需要更多来自ImageMagick发行版的DLL。
从理论上讲,版本不必完全匹配,但显然在Imagick 6.8.1和6.8.8之间的某个地方,函数MagickGetImageMatte
已经从DLL中删除,所以最安全的方法是找到与构建Imagick扩展所针对的完全相同的ImageMagick版本:
的同一目录中
不需要安装ImageMagick。实际上,如果路径中碰巧有一个不兼容的ImageMagick,PHP扩展可能会失败。
Ghostscript
这既适用于ImageMagick (**convert
**)的命令行版本,也适用于上述扩展。
要读取Postscript系列的文件,需要Ghostscript。
ImageMagick将按照以下步骤查找Ghostscript:
GS_DLL
条目,指向gswin32.dll
的路径,它将使用该条目,并忽略委托,它将查询它的“委托”。似乎有一个硬编码的回退,但您可以通过将delegates.xml
分别放在php5(n)ts.dll
或convert.exe
旁边来覆盖它,或者在~\.magick
.@PS_Delegate@
,它将用gswin32c.exe
替换它,然后继续在路径中查找该可执行文件。您可以将此字符串替换为ImageMagick应调用的gswin32c.exe
甚至gswin64c.exe
的完整路径。发布于 2021-07-16 02:10:45
我遇到了同样的问题,我安装了Ghostscript 9.54.0 for Windows (64位),它解决了我的问题:
遵循以下步骤:
在重述内核和重新执行jupyter笔记本之后。
https://stackoverflow.com/questions/3243361
复制相似问题