Какой самый простой способ получить ImageMagick 7 с поддержкой PNG на Ubuntu?

Вопрос или проблема

Я пытался найти простое объяснение в течение нескольких часов, но никак не могу найти что-то полезное. Я в основном программист на 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 из исходников.

Чтобы это исправить:

  1. раскомментируйте deb-src http://us.archive.ubuntu.com/ubuntu/ bionic main restricted в /etc/apt/sources.list

  2. установите зависимости

sudo apt update
sudo apt build-dep imagemagick
  1. Переустановите 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.

Оцените материал
Добавить комментарий

Капча загружается...