Вопрос или проблема
Я пытался найти простое объяснение в течение нескольких часов, но никак не могу найти что-то полезное. Я в основном программист на Windows с некоторым опытом работы с ОС на базе Linux. По какой-то причине выполнение команды apt install imagemagick
дает мне очень старую версию (до 2012 года), а в более поздних версиях есть изменение, которое мне нужно, что означает, что мне нужно собрать из исходников.
Компиляция IM 7 на Ubuntu 18.04 достаточно проста: загрузить tar.gz, извлечь, ./configure
, make
и make install
. Однако, похоже, поддержка PNG не включена по умолчанию (почему??).
Я пробовал выполнить ./configure --with-png
, но это ничего не дало (я вижу --with-png=yes no
, что, возможно, означает “да, вы запросили поддержку PNG, но нет, я вам её не дал”). Я видел много форумов и вопросов на SE об этом, но все, кто спрашивает, похоже, имеют какие-то предварительные знания, которых мне явно не хватает, и вопросы кажутся о каком-то более позднем этапе процесса.
Итак, что мне действительно нужно сделать, чтобы получить поддержку PNG?
(И несколько дополнительных вопросов: почему нет документации по этому поводу? Почему изначально не включена поддержка PNG? Почему нет готовых бинарных файлов для Ubuntu?)
Связанный вопрос: Imagemagick всё ещё существует после apt remove?
Я настоятельно рекомендую ImageMagick Easy Install (IMEI):
https://github.com/SoftCreatR/imei/
Он находит все необходимые исходные/разработческие библиотеки для дополнительных “делегатов” ImageMagick (форматов изображений в терминологии IM). Кроме того, он может постепенно обновлять вашу локальную установку из более новых источников после первоначальной установки.
Шаги установки на данный момент:
git clone https://github.com/SoftCreatR/imei
cd imei
sudo ./imei.sh
ImageMagick не находит libpng
самостоятельно. Самый простой способ указать, как найти, скомпилировать и связать с libpng
— это установить libpng
в сочетании с pkg-config
:
sudo apt install build-essential libpng-dev pkg-config
Теперь вы можете проверить, работает ли это:
./configure | grep -i png
checking for libpng >= 1.0.0... yes
PNG --with-png=yes yes
CFLAGS = -I/usr/include/libpng16 -fopenmp -Wall -g -O2 -mtune=amdfam10 -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16
LIBS = -lpng16 -lz -lz -lm -lpthread
DELEGATES = png zlib
Я не уверен, какое сообщение об ошибке вы получали, но я получал convert: no decode delegate for this image format `JPG' @ error/constitute.c/ReadImage/562
при работе с JPEGs с новой установкой ImageMagick из исходников.
Чтобы это исправить:
-
раскомментируйте
deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted
в /etc/apt/sources.list -
установите зависимости
sudo apt update
sudo apt build-dep imagemagick
- Переустановите ImageMagick
./configure
make
sudo make install
sudo ldconfig /usr/local/lib
источник: https://linuxconfig.org/how-to-install-imagemagick-7-on-ubuntu-18-04-linux
Если кто-то хочет сделать это в Docker с ImageMagick Easy Install:
FROM eclipse-temurin:21-jdk-jammy
# Жестко зафиксируйте версию, чтобы избежать неожиданных изменений
ARG IMAGE_MAGICK_VERSION=7.1.1-43
# Установите ImageMagick используя IMEI - ImageMagick Easy Install
# https://github.com/SoftCreatR/imei
RUN t=$(mktemp) && \
wget 'https://dist.1-2.dev/imei.sh' -qO "$t" && \
bash "$t" --imagemagick-version $IMAGE_MAGICK_VERSION && \
rm "$t"
Включает множество делегатов:
# magick -version
Version: ImageMagick 7.1.1-43 Q16-HDRI aarch64 afd817ca6:20241222 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP(4.5)
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib gvc heic jbig jng jp2 jpeg jxl lcms lqr ltdl lzma openexr pangocairo png ps raqm raw rsvg tiff webp wmf x xml zip zlib zstd
Compiler: gcc (11.4)
Ответ или решение
Получение ImageMagick 7 с поддержкой PNG на Ubuntu может быть несколько запутанным, особенно если у вас небольшой опыт работы с Linux. Однако следуя простым шагам, описанным ниже, вы сможете установить необходимую версию ImageMagick с поддержкой PNG на Ubuntu, даже если находите документацию недостаточной.
Шаги для установки ImageMagick 7 с поддержкой PNG на Ubuntu
1. Подготовка системы для сборки
Перед сборкой ImageMagick из исходного кода вам нужно установить несколько необходимых библиотек и инструментов. Это обеспечит корректную компиляцию ImageMagick с поддержкой различных форматов изображений, включая PNG.
sudo apt update
sudo apt install build-essential libpng-dev pkg-config
Команда установки libpng-dev
необходима для поддержки PNG, а pkg-config
поможет найти и использовать эту библиотеку при сборке.
2. Загрузка и сборка ImageMagick
Теперь, после подготовки системы, скачайте последнюю версию ImageMagick с официального сайта и приступайте к сборке:
wget https://download.imagemagick.org/ImageMagick/download/ImageMagick.tar.gz
tar -xzf ImageMagick.tar.gz
cd ImageMagick-7.*
./configure --with-png
make
sudo make install
sudo ldconfig /usr/local/lib
Параметр --with-png
в команде ./configure
явно указывает на необходимость поддержки PNG.
3. Проверка установки
Для проверки успешной установки и наличия поддержки PNG используйте следующую команду:
convert -version
Вы должны увидеть, что в списке делегатов (delegates) присутствует png
.
Альтернатива: ImageMagick Easy Install
Если сборка из исходного кода не ваш путь или вас интересует более упрощённый метод, советую воспользоваться ImageMagick Easy Install (IMEI). Это скрипт автоматической установки, который упрощает процесс установки ImageMagick и всех необходимых делегатов.
git clone https://github.com/SoftCreatR/imei
cd imei
sudo ./imei.sh
Часто задаваемые вопросы
Почему нет поддержки PNG "из коробки"?
Драйверы для различных форматов изображений, такие как PNG, могут требовать лицензируемых библиотек, которые не входят в стандартный набор поставки, чтобы сохранить лёгкость сборки.
Почему нет готовых сборок для Ubuntu?
Проблема совместимости и различий в системных зависимостях на разных машинах может привести к возникновению ошибок. Сборка из исходного кода позволяет устранить подобные разногласия.
Используйте вышеуказанные инструкции для успешной установки и настройки ImageMagick 7 с поддержкой PNG на вашей системе Ubuntu. Это обеспечит вам возможность работать с нужными форматами изображений и воспользоваться преимуществами актуальной версии ImageMagick.