Почему картинка меняет цветность при изменении средствами ImageMagick?

При редактировании изображения средствами PHP картинка иногда меняет цветность. Хоть цвета не трогали. Как выяснилось, что это не проблема PHP и вообще не проблема языка программирования. В linux-консоли при изменении через ImageMagick, эти картинки ведут себя точно также.

Что делать и как решить эту проблему?

Как проявляется проблема?

Вроде не особо важная проблема, но порой она является критической. К примеру, на сайте лакокрасочных товаров при ресайзе изображений, эта проблема будет заметна.

Вот так выглядит проблема, если взять портрет человека:

Слева оригинал, а справа «ресайз». Цвета становятся жухлыми и блеклыми. С цветом, повторяю, никаких манипуляций не делалось.

Решение

Проблема заключается в цветовом профиле, который прикреплен к изображению. Некоторые дизайнеры и фотографы при ретушировании используют цветовой профиль «по максимуму». И при сохранении готового результата не всегда меняют его на правильный.

В моем примере фотограф использовал для ретуши фотографии – ProPhoto RGB, а когда сохранял результат забыл поменять на sRGB. Всегда для сайта нужно сохранять изображения в цветовом пространстве sRGB. И ни в каком другом.

ImageMagick, который используется в PHP при ресайзе изображений, не знает про профиль ProPhoto RGB и приводит его к sRGB. Приводит как умеет и из-за этого меняются цвета.

Чтобы команды ниже работали нужно установить imagemagick:

sudo apt install imagemagick

В Windows тоже можно поставить этот пакет. Команды идентичны.

Проверить какой профиль используется на Linux можно командой:

identify -verbose 001.jpg | grep Colorspace
  Colorspace: ProPhoto

Чтобы заменить цветовой профиль у изображения, нужно:

  1. Загрузить профиль отсюда или с этого блога - sRGB2014.icc
  2. Выполнить команду (Внимание! Файл заменится на исправленный):
    mogrify -profile sRGB2014.icc 001.jpg
    В примере выше сам профиль был в той же директории, что и изображения. Если у вас они в разных местах, то пути должны быть абсолютные.

Если необходимо поменять цветовой профиль у большого количества изображений, то используем команду:

for f in $(find НАЗВАНИЕ_ДИРЕКТОРИИ -name '*.jpeg'); do mogrify -profile sRGB2014.icc $f; done 

Команда умеет рекурсивно ходить по вложенным директориям и менять цветовой профиль у картинок. В Windows не работает.

Иногда для ImageMagick не хватает ресуров. Добавить их можно так.

На будущее дизайнера/фотографа стоит попросить сохранять финальные версии фотографий в цветовом охвате – sRGB, который используется для web.

Немного теории по профилям цветности

Вообще, если вы хотите углубится в тему цветового пространства, когда использовать sRGB, а когда ProPhoto RGB, то за меня уже это сделали вот здесь.

Кратко:

sRGB

  1. Немного «усеченная» цветность. Но несмотря на это в 99% случаев ее достаточно.
  2. Все TN-мониторы до sRGB не дотягивают, а точнее не показывают практически 10-20% цветов.
  3. IPS мониторы максимально приближены к этому охвату.
  4. Все изображения для сайта сохранять в sRGB.
  5. Если используется другой профиль, браузер будет стараться подобрать подходящий и не всегда это будет выглядеть как в оригинале.

Adobe RGB

  1. Этот профиль стоит использовать только для полиграфии, так как печатающие устройства высокого качества имеют больший цветовой охват.
  2. Мониторы, поддерживающие цветовой охват до Adobe RGB стоят очень дорого.
  3. На ноутбуках такие матрицы не ставят.

ProPhoto RGB

  1. Цветовой профиль только для расчетов. Этот формат стоит использовать только для сложной и тяжелой ретуши, так как незачем ограничивать графический редактор в точности вычислений.
  2. Современные мониторы не поддерживают такой цветовой охват.
  3. После ретуши цветовой профиль нужно всегда менять на sRGB – для web или на Adobe RGB – для печати.

Теги:

Комментарии






Важное событие
Основание Yandex<
Основание Yandex
Узнать подробнее
Комментарии
Интересное
Оглавление
  1. Как проявляется проблема?
  2. Решение
  3. Немного теории по профилям цветности
    1. Кратко:
      1. sRGB
      2. Adobe RGB
      3. ProPhoto RGB