ImageMagick缺少解码代理。

4

我最近搬到了MediaTemple,并按照他们的KB文章(在这里)安装了ImageMagick和IMagick。

没有错误,而且phpinfo()显示模块已正确安装。

当我尝试通过PHP在JPG图像上使用IM时,我会收到以下错误:

Uncaught exception 'ImagickException' with message 'no decode delegate for this image format 
/home/149263/domains/wer.com/html/images/pictures/post/tmp/original/' @ error/constitute.c/ReadImage/544' in /nfs/c10/h04/mnt/149263/domains/wer.com/html/application/controllers/post.php:301
Stack trace:
#0 /nfs/c10/h04/mnt/149263/domains/wer.com/html/application/controllers/post.php(301): Imagick->__construct('/home/149263/do...')
#1 [internal function]: Post->filter('punch')
#2 /nfs/c10/h04/mnt/149263/domains/wer.com/html/system/core/CodeIgniter.php(359): call_user_func_array(Array, Array)
#3 /nfs/c10/h04/mnt/149263/domains/wer.com/html/index.php(217): require_once('/nfs/c10/h04/mn...')
#4 {main} thrown in /nfs/c10/h04/mnt/149263/domains/wer.com/html/application/controllers/post.php on line 301

然而,convert -list configure 返回:
DELEGATES     bzlib djvu fontconfig freetype gvc jpeg jp2 lcms openexr png rsvg tiff wmf x11 xml zlib

identify -list format 返回:

JPEG* JPEG      rw-   Joint Photographic Experts Group JFIF format (62)
JPG* JPEG      rw-   Joint Photographic Experts Group JFIF format

看起来安装是正确的。
ImageMagick 6.7.7-0 2012-05-22 
imagick module version  3.1.0RC1

有什么建议可以解决这个问题吗?
2个回答

10

以下是如何在Ubuntu 12.04上安装最新版本(截至本文撰写时为6.8.4-6)的ImageMagick的快速指南。

首先,通过apt-get删除以前安装的任何旧版本:

sudo apt-get remove imagemagick

然后更新apt-get并安装一些支持软件包:

sudo apt-get update
sudo apt-get install libperl-dev gcc libjpeg-dev libbz2-dev libtiff4-dev libwmf-dev libz-dev libpng12-dev libx11-dev libxt-dev libxext-dev libxml2-dev libfreetype6-dev liblcms1-dev libexif-dev perl libjasper-dev libltdl3-dev graphviz pkg-config
使用wget从ImageMagick.org获取源代码。
下载源代码后,请解压缩:
tar -xzf ImageMagick.tar.gz

现在进行配置和编译:

cd ImageMagick-6.8.4-6
./configure
sudo make
sudo make install

避免出现以下错误:

convert: error while loading shared libraries: libMagickCore.so.2: cannot open shared object file: No such file or directory
将以下行添加到〜/ .bashrc 文件中:
export LD_LIBRARY_PATH=/usr/local/lib

更新:如果您仍然收到与上述类似的错误,请尝试运行ldconfig:

sudo ldconfig

您可以通过以下方式确认安装和可用格式:

identify -list format

0
你尝试过使用exec()运行一些使用Imagemagick的代码,以确定问题是出在Imagemagick还是Imagick吗?

抱歉,Bonzo,感谢您的回复 - 是我的问题,文件名没有正确传递给IM,因此它崩溃了 - 错误日志上方的第二行提示显示没有文件名。 - pepe
很高兴问题解决了;尽管IM的错误报告有时会让人感到困惑。 - Bonzo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接