Как добавить поддержку формата изображения JPEG

После установки Imagemagick я протестировал его с изображением jpg, например так:

identify 1.jpg

Но я получил такой результат:

identify: no decode delegate for this image format `1.jpg' @ error/constitute.c/ReadImage/550.

Затем я попытался добавить поддержку формата JPEG:

yum install libjpeg libjpeg-devel

но я получил:

Setting up Install Process
No package libjpeg available.
No package libjpeg-devel available.
Nothing to do

Я думал, что мне нужно обновить apt-get, я сделал:

apt-get install libjpeg libjpeg-devel

но я получил:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libjpeg
E: Unable to locate package libjpeg-devel

Есть ли простой способ установить эти библиотеки? Я использую Ubuntu 12.04.

8 ответов

Решение

Я исправил проблему, установив из источника библиотеку кодирования jpeg, доступную по адресу http://www.ijg.org/files/jpegsrc.v8c.tar.gz.

cd /usr/local/src
tar xvfz jpeg-8c.tar.gz
cd jpeg-8c
./configure --enable-shared --prefix=$CONFIGURE_PREFIX
make
sudo make install

Затем я переустановил ImageMagick из источника:

cd /usr/local/src
tar xvfz ImageMagick-6.6.9-5.tar.gz
cd ImageMagick-6.6.9-5
export CPPFLAGS=-I/usr/local/include
export LDFLAGS=-L/usr/local/lib
./configure --prefix=/usr/local --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --disable-openmp
make
sudo make install

Теперь это работает, я проверил это так:

sam@ubuntu:~/RubymineProjects/project/tmp$ identify 1.jpg
1.jpg JPEG 128x106 128x106+0+0 8-bit sRGB 2.22KB 0.000u 0:00.000

Если вы решили собрать ImageMagick из исходного кода, вам нужно быть готовым вручную разрешить все зависимости. Если у вас нет острой необходимости, вы должны установить все программное обеспечение на Ubuntu из репозитория - либо официальные репозитории, либо PPA.

Если вы устанавливаете Imagemagick с помощью APT (apt-get, Synaptic, Software Center и т. Д.), Тогда файлы JPG будут работать нормально, как я подтвердил на моей машине.

Если ваша причина для сборки из исходного кода - получить более свежую версию, ищите PPA, который отслеживает самую последнюю версию. Если вы строите из исходного кода, чтобы помочь с разработкой, то вам следует выяснить у ребят из Imagemagick только то, что требуется для его успешного построения из исходного кода. Возможно, вам нужно указать флаг ./configure или установить какую-либо библиотеку разработки перед запуском ./configure,

Но, как правило, создание из источника просто без необходимости усложняет ситуацию.

Кстати, Red Hat и Ubuntu используют разные имена для пакетов. Так что если yum жалуется на отсутствие пакета, это не должно удивлять, если apt-get не могу найти посылку с таким именем. Вы не должны смешивать менеджеры пакетов в системе, если у вас нет действительно веской причины для этого. Даже тогда, попробуйте все остальные варианты в первую очередь.

Обратите внимание, что no decode delegate Ошибка может (довольно странно) возникнуть из-за того, что imagemagick (или какая-то его часть) не может найти файл. Поэтому перед запуском переустановки imagemagick сверьтесь с identify -list format а также convert -list configure поддерживается ли формат JPEG, и если это так, проблема, вероятно, будет где-то еще.

Например, convert -resize 50% foo\ bar.jpg дал мне no decode delegate for this image format эрор, но convert -resize 50% 'foo bar.jpg' работал отлично.

Если вы только что установили php5-imagick, попробуйте также установить полный пакет imagemagick. Это установит все необходимые библиотеки, такие как jpeg.

sudo apt-get install imagemagick

Затем перезапустите ваш веб-сервер, чтобы перезагрузить все библиотеки:

sudo service apache2 restart

Декодирование JPEG теперь должно работать без ошибок.

Это сообщение об ошибке также появляется, если в именах файлов есть ПРОБЕЛЫ, так как imagick и его набор инструментов не могут корректно обрабатывать их в Linux. Поэтому перед обработкой файлов с помощью imagemagick, mogrify, identity или любого из инструментов, поставляемых с imagemagick, выполните

      sudo find ./ -depth -name "* *" -execdir rename -v 's/ /_/g' "{}" \;

заменить все пробелы в именах файлов символами подчеркивания;

Я надеюсь, что это поможет кому-то

Я решил это, установив ImageMagick rpm с помощью команды dnf. См. мой ответ здесь для справки - Проблемы с установкой делегата ImageMagick PNG

Ты пытался:

sudo apt-get установить libjpeg62

Если приведенная выше команда не работает, перейдите по следующей ссылке.

http://psx-scene.com/forums/f150/help-install-libjpeg-libpng-ubuntu-9-10-livecd-64122/

Дайте им знать, если это было полезно, удачи...:)

| Самый простой способ | Загрузите "Synaptic Package Manager" из Центра программного обеспечения. -> удалены старые пакеты libjpeg * -> переустановлены libjpeg8 & libjpeg-turbo8 & libjpeg-turbo8-dev.

PS: я получаю ту же ошибку. Мне потребовалось 2 дня, чтобы решить. Моя ошибка, когда я пытался отобразить изображение JPG:

no decode delegate for this image format `jpeg' @ error/constitute.c/readimage/504

Затем я загружаю "Менеджер пакетов Synaptic" из Центра программного обеспечения. -> удалены старые пакеты libjpeg * -> переустановлены libjpeg8 & libjpeg-turbo8 & libjpeg-turbo8-dev.

(* менеджер пакетов synaptics покажет зависимость с другим пакетом, удаляя только старые независимые пакеты libjpeg)

После этого я могу открывать изображения в формате JPEG, не опасаясь ошибок.

Надеюсь, поможет:)

Другие вопросы по тегам