ImageMagick, ICC і PHP: коректна обробка кольорів та зображень на Linux

Для коректної обробки зображень на сервері важливо мати підтримку збереження пропорцій, обрізки, потрібних форматів і перетворення кольорів, зокрема AdobeRGB → sRGB. Нижче — приклад встановлення ImageMagick 7.1.2-0 із потрібними делегатами на Debian/Ubuntu.

Теги: #linux #images #imagemagick #php

1. Встановіть залежності для компіляції

sudo apt update
sudo apt install -y build-essential checkinstall libxml2 libxml2-dev liblcms2-dev libpng-dev libtiff-dev libwebp-dev libfreetype6-dev libjpeg-dev zlib1g-dev libzstd-dev

Перевірте, що встановлені XML і Little CMS:

dpkg -l | grep libxml2
dpkg -l | grep liblcms2

2. Завантажте та скомпілюйте ImageMagick 7.1.2-0

cd ~
wget https://imagemagick.org/archive/ImageMagick.tar.gz
tar xvzf ImageMagick.tar.gz
cd ImageMagick-7.*

Для пошуку бібліотек через pkg-config додайте шлях:

export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH

Запустіть конфігурацію з підтримкою потрібних делегатів:

./configure   --with-modules   --with-xml   --with-lcms   --with-jpeg   --with-png   --with-tiff   --with-webp   --with-freetype   --with-zlib   --with-zstd

Скомпілюйте та встановіть:

make -j$(nproc)
sudo make install
sudo ldconfig /usr/local/lib

3. Перевірте версію та делегати

magick -version

У виводі очікується ImageMagick 7.1.2-0 і делегати на кшталт jpeg png tiff webp xml lcms. Якщо потрібного делегата немає, перевірте dev-пакет і повторіть configure та компіляцію.

4. Встановіть ICC-профілі

Завантажте профілі sRGB2014.icc та AdobeRGB1998.icc із color.org, після чого скопіюйте їх у системний каталог:

sudo mkdir -p /usr/local/share/icc
sudo cp ~/Downloads/sRGB2014.icc /usr/local/share/icc/sRGB2014.icc
sudo cp ~/Downloads/AdobeRGB1998.icc /usr/local/share/icc/AdobeRGB1998.icc

Під час конвертації AdobeRGB у sRGB застосовуйте профілі явно у вашому ImageMagick або PHP-коді. Це допомагає уникати тьмяних, перенасичених чи неправильно відображених кольорів у браузері.

5. Перевірте PHP Imagick

PHP-розширення imagick може бути зібране проти іншої версії ImageMagick, ніж CLI-команда magick. Перевірте версію з боку PHP:

php -m | grep imagick
php --ri imagick

Якщо PHP Imagick використовує стару бібліотеку, його потрібно оновити або перевстановити після встановлення ImageMagick. Переконайтеся, що PHP-процес має доступ до /usr/local/share/icc/.

Діагностика

  • Увімкніть лог PHP, наприклад /var/log/php_errors.log.
  • Перевірте права доступу до ICC-файлів для користувача PHP-FPM.
  • Не довіряйте лише наявності CLI magick — вебзастосунок може використовувати іншу бібліотеку.
  • Після зміни бібліотек перезапустіть PHP-FPM і вебсервер.
sudo systemctl restart php8.2-fpm
sudo systemctl reload nginx

Конкретну назву сервісу PHP-FPM замініть на ту, що використовується у вашій системі.

Коментарі (0)

Залишити коментар

Від 25 до 1000 символів. HTML не підтримується.
Оцінка
Погано Добре