Як додати підтримку формату зображення JPEG


12

Після встановлення 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.


2
Для чого ви використовуєте yum? Це менеджер пакунків для іншого розповсюдження (Red Hat & Fedora), і якщо ви раніше yumвстановлювали imagemagick, я зовсім не здивований, що він не може знайти бібліотеки! Вам слід встановлювати програмне забезпечення лише з apt-get, якщо ви дійсно не знаєте, що робите! Крім того, "Ubuntu 12" недостатньо специфічний ... Є дві версії Ubuntu, які починаються з "12": 12.04 та 12.10. Версії Ubuntu засновані на даті випуску: 12.04 вийшов у квітні (місяць № 04) '12, а 12.10 вийшов у жовтні '12. Будьте впевнені та уточнюйте!
тридцять тридцятиріччя

У мене є 32-розрядна версія Ubuntu Release 12.04 (точна), я не встановлював imagemagick з yum, замість цього я tar xvfz ImageMagick.tar.gz, cd ImageMagick-6.8.0, cd ImageMagick-6.8.0-4, ./configure , make, sudo make install, sudo ldconfig / usr / local / lib
Самір Сабри

спробуйте apt-get install libjpeg-dev
Shashank Singla

Це дійсно чудова відповідь там http://askubuntu.com/a/746195
Л. Персі

як у світі будь-який пакет Imagemagick може бути корисним без підтримки JPEG ?! Це як продавати піцу без сиру чи хліба чи томатного соусу.
Шрідхар Сарнобат

Відповіді:


11

Я вирішив проблему, встановивши з джерела бібліотеку кодування 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

Це працювало для мене. Мені довелося додати експорт LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: / usr / local / lib / in .profile
mv288

Я встановив лише перший jpegsrc з джерела та перевстановив ImageMagick через, apt-getі він також працював.
kyng

6

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

Якщо встановити Imagemagick за допомогою APT ( apt-get, Synaptic, Software Center тощо), файли JPG працюватимуть чудово, як я підтвердив на своїй машині.

Якщо ваша причина побудови з джерела полягає в тому, щоб отримати більш нову версію, полюйте на PPA, який відстежує останню версію. Якщо ви будуєте з джерела для того, щоб допомогти в розвитку, то вам слід дізнатись від людей Imagemagick, що саме потрібно для успішного його створення з джерела. Можливо, вам потрібно вказати якийсь прапор ./configureабо встановити якусь бібліотеку розробок перед запуском ./configure.

Але зазвичай будівництво з джерела просто непотрібно ускладнювати речі.

О, до речі, Red Hat і Ubuntu використовують різні назви для пакетів. Тож, якщо yumскаржиться на відсутній пакет, це не повинно дивуватися, якщо apt-getне вдасться знайти пакунок з таким іменем. Не слід змішувати менеджерів пакетів у системі, якщо у вас є справді вагомі причини для цього. Вже тоді спробуйте спочатку всі інші варіанти.


У мене немає конкретних причин будувати з джерела, якщо встановлення Imagemagick за допомогою APT (apt-get, Synaptic, Software Center тощо) вирішить проблему файлів JPG, я перейду з цим, чи не підкажете, будь ласка, вкажіть мені, як встановити Imagemagick використовуючи APT, як ви робили?
Самір Сабри

@SamirSabri: просто знайдіть Центр програмного забезпечення або Synaptic. Або автодоповнення використовувати на , apt-getщоб відкрити наступну команду: sudo apt-get install imagemagick.
Скотт Северанс

До речі, я настійно пропоную видалити всі попередні спроби встановити imagemagick, перш ніж спробувати встановити за допомогою мого методу. Інакше у вас може виникнути конфлікти.
Скотт Северанс

Незважаючи на те, що я видалив попередні спроби, я отримую помилку під час ідентифікації зображення у форматі jpg, наприклад: sam @ ubuntu: ~ / RubymineProjects / project / tmp $ define 1.jpg identify: делегат декодування для цього формату зображення `1.jpg 'немає @ помилка / constitute.c / ReadImage / 550.
Самір Сабрі

3

Зауважте, що 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'працював чудово.


1

Якщо ви тільки що встановили php5-imagick, спробуйте також встановити повний пакет Imagemagick. Це дозволить встановити всі необхідні бібліотеки, такі як jpeg.

sudo apt-get install imagemagick

Потім перезапустіть веб-сервер, щоб перезавантажити всі бібліотеки:

sudo service apache2 restart

Розшифровка JPEG тепер повинна працювати без помилок.


0

ти намагався :

sudo apt-get install libjpeg62

якщо вищевказана команда не працює, перейдіть за наступним посиланням.

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

Повідомте їх, якщо це було корисно, удачі ... :)


Я спробував ваше рішення, я отримав: Читання списків пакунків ... Готово дерево залежності залежності Читання інформації про стан ... Готово libjpeg62 - це вже найновіша версія. 0 оновлених, 0 нещодавно встановлених, 0 для видалення та 6 не оновлених. Але я все-таки отримую помилку під час ідентифікації jpg-зображення: sam @ ubuntu: ~ / RubymineProjects / project / tmp $ identify 1.jpg ідентифікація: делегат декодування для цього формату зображення `1.jpg '@ error / constitute.c / ReadImage / 550.
Самір Сабрі

Гаразд, я знайшов це: blog.ericlamb.net/2008/11/…, будь ласка, перевірте і повідомте мене, дякую за вашу відповідь.
Ріші Колвекар

Я щойно виправив це, перш ніж прочитати ваш останній коментар, дякую, я маю це у своїй відповіді нижче
Самір Сабрі

гарно звучить !!! :)
Ріші Колвекар

0

| Найпростіший спосіб | Завантажте " 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 Package Manager " з програмного центру. -> видалено старі пакети libjpeg * -> перевстановлено libjpeg8 & libjpeg-turbo8 & libjpeg-turbo8-dev.

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

Після цього я можу відкривати зображення JPEG, не боячись помилок.

Сподіваюся, це допомагає :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.