【问题标题】:ImageMagick missing decode delegatesImageMagick 缺少解码委托
【发布时间】:2015-08-02 03:31:36
【问题描述】:

我最近搬到了 MediaTemple,并按照他们的知识库文章 here 安装了 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

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

【问题讨论】:

    标签: php imagemagick imagick


    【解决方案1】:

    这是在 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
    

    【讨论】:

      【解决方案2】:

      您是否尝试过通过 exec() 使用 Imagemagick 运行一些代码以查看问题出在 Imagemagick 还是 Imagick 上?

      【讨论】:

      • 啊,谢谢回复 - 这是我的错误,文件名没有正确传递给 IM,因此它崩溃了 - 提示是上面的错误日志的第二行显示没有文件名
      • 很高兴它的排序;虽然 IM 的错误报告有时会让人感到困惑。
      猜你喜欢
      • 2011-08-03
      • 2013-10-18
      • 2015-08-01
      • 2016-08-26
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      相关资源
      最近更新 更多