В ImageMagick отсутствуют делегаты декодирования

Недавно я перешел на MediaTemple и установил ImageMagick и IMagick, следуя их статье в базе знаний здесь.

Нет ошибок, и phpinfo() показывает, что модуль установлен правильно.

Когда я пытаюсь использовать IM для изображения JPG через PHP, я получаю эту ошибку

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

Любые предложения, как устранить эту проблему?


person pepe    schedule 22.05.2012    source источник


Ответы (2)


Вот быстрый и грязный пример установки последней (версия 6.8.4-6 на момент написания этой статьи) ImageMagick на Ubuntu 12.04.

Начните с удаления всех старых версий, ранее установленных через apt-get:

sudo apt-get удалить 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
person Chandan    schedule 04.04.2013

Пробовали ли вы запускать какой-либо код, используя Imagemagick, через exec(), чтобы увидеть, связана ли проблема с Imagemagick или Imagick?

person Bonzo    schedule 22.05.2012
comment
argh, бонзо, спасибо за ответ - это было моей ошибкой, имя файла неправильно передавалось в IM, и поэтому он давал сбой - подсказка была 2-й строкой журнала ошибок выше, показывающей отсутствие имени файла - person pepe; 23.05.2012
comment
Рад, что все в порядке; хотя сообщения об ошибках IM иногда могут сбивать с толку. - person Bonzo; 23.05.2012