Коротко: причина почти всегда — потеря цветового профиля (ICC) при перекодировании. Если фото снято в широкой цветовой гамме (Display P3 на iPhone, Adobe RGB в камере или Photoshop), а инструмент сжатия работает только с sRGB, цвета пересчитываются некорректно и фото выглядит темнее и тусклее. Это ограничение большинства браузерных инструментов сжатия, не порча файла: оригинал не пострадал.

Вы сжали или сконвертировали фотографию, а результат выглядит темнее, тусклее или менее насыщенным, чем оригинал, особенно это заметно на ярких красных и зелёных тонах. Файл при этом открывается нормально, просто «краски другие». Разбираемся, откуда это берётся.

Что такое цветовой профиль (ICC)

Помимо самих пикселей, изображение может хранить ICC-профиль — описание того, какой именно диапазон цветов (цветовое пространство) использован при съёмке или редактировании. Самое частое пространство — sRGB, стандарт для веба. Но многие современные камеры и смартфоны (в первую очередь iPhone в режиме «Wide Color») снимают в более широком пространстве — Display P3, а фотографы и дизайнеры в Photoshop нередко работают в Adobe RGB.

Без профиля одни и те же числовые значения пикселя (например, RGB 255, 0, 0) в разных пространствах — это физически разный цвет. ICC-профиль — это «переводчик», который говорит программе, как именно интерпретировать числа.

Почему профиль теряется при сжатии

Инструменты сжатия и конвертации (AeroPic — не исключение) декодируют изображение в сырой массив пикселей, обрабатывают его и кодируют обратно. Большинство таких пайплайнов — включая open-source WASM-кодировщики, на которых работает практически весь браузерный сегмент рынка — читают только сами пиксели и не переносят ICC-профиль в выходной файл. Итоговый файл технически валиден, но при открытии интерпретируется по умолчанию как sRGB.

Если исходное фото было в Display P3 или Adobe RGB, а на выходе программа просмотра считает его sRGB, самые насыщенные цвета (в первую очередь красные и зелёные) «сжимаются» в более узкий диапазон. Визуально это читается как потускнение или лёгкое потемнение, хотя формально ни один пиксель не «потемнел» специально.

Как проверить, это ли ваш случай

  • Разница почти не видна на обычных фото (пейзажи, портреты в естественном освещении) и хорошо заметна на ярких, насыщенных цветах — красный товар, зелёная зелень, неоновая подсветка.
  • Оригинал открывается в приложении камеры или фоторедакторе нормально, а после сжатия/конвертации в любом браузерном инструменте выглядит тусклее.
  • Если открыть оригинал и результат рядом на одном экране и цвета отличаются только на самых ярких участках — это оно.

Как избежать

Вариант 1 — снимайте или экспортируйте сразу в sRGB

На iPhone: Настройки → Камера → Форматы → выбрать «Наиболее совместимые» вместо «Высокая эффективность»: это заставляет камеру снимать в sRGB, а не в Display P3. В Photoshop/Lightroom при экспорте выбрать профиль sRGB («Convert to Profile» → sRGB IEC61966-2.1) перед тем, как загружать фото в любой веб-инструмент.

Вариант 2 — учитывайте, что разница обычно небольшая

Для большинства задач (сайт, соцсети, маркетплейс) разница между Display P3 и sRGB после пересчёта едва заметна на глаз и не критична. Она важна, если вы делаете предметную съёмку с точной цветопередачей (например, товар, где важен точный оттенок ткани или упаковки), в этом случае экспорт в sRGB на этапе съёмки/редактирования до загрузки в любой онлайн-инструмент избавит от сюрприза.

Важно: это не порча и не баг конкретно одного сервиса, потому что так себя ведёт практически весь браузерный сегмент инструментов сжатия. Оригинальный файл с профилем при этом никуда не девается: если пересжать заново из правильно экспортированного sRGB-файла, результат будет точным.

Сожмите фото в AeroPic

Для точной цветопередачи экспортируйте исходник в sRGB перед загрузкой

Открыть компрессор →