Как работают сжатие и конвертация форматов изображений?
При работе с цифровыми изображениями вы неизбежно сталкиваетесь с вопросами о размере файла, качестве и выборе формата. Почему фотография занимает так много места? Почему после сжатия изображение порой становится больше? Когда имеет смысл конвертировать файл в другой формат и что при этом ожидать? Давайте разберёмся.
От чего зависит размер изображения
Цифровое изображение состоит из множества цветных пикселей. Чем больше пикселей, тем выше детализация и больше размер файла. Однако на размер влияет не только разрешение, но и способ хранения данных. Это зависит от формата файла и типа сжатия, так как разные форматы и методы кодирования по-разному оптимизируют информацию.
Форматы изображений и их различия
Существует несколько популярных форматов изображений, каждый из которых разрабатывался под разные задачи. То, как формат хранит данные, влияет на размер файла, качество, поддержку прозрачности, а также на совместимость с приложениями и устройствами.
JPEG это самый популярный формат для фотографий. Использует сжатие с потерями: часть информации безвозвратно удаляется, чтобы уменьшить размер. JPEG-файлы обычно маленькие и быстро загружаются, поэтому подходят для публикации онлайн и пересылки по email и в мессенджерах. Однако этот формат не поддерживает прозрачность, а при многократном сохранении качество заметно падает.
PNG часто используют для графики, скриншотов, изображений с прозрачностью. Этот формат рименяет сжатие без потерь, поэтому все детали сохраняются даже при многократном редактировании, что делает его отличным выбором для логотипов, иконок, изображений с текстом и чёткими линиями. PNG-файлы обычно крупнее JPEG, особенно для фотографий, но качество всегда на высоте.
WEBP — это более современный формат, разработанный для использования в интернете. Он поддерживает прозрачность, а также сжатие как с потерями, так и без потерь. WEBP зачастую обеспечивает меньший размер файла по сравнению с PNG или JPEG при схожем качестве. Большинство современных браузеров и многие приложения поддерживают WEBP, однако некоторое старое ПО может его не распознавать.
GIF в основном применяется для простых анимаций. Он ограничен 256 цветами и поддерживает только базовую прозрачность (пиксели могут быть либо полностью прозрачными, либо полностью непрозрачными). Из-за этих ограничений GIF не подходит для фотографий или детализированных изображений, но остается популярным для коротких циклических анимаций.
TIFF используется в профессиональных сферах, например, в издательстве и при сканировании. Файлы TIFF могут быть без потерь или совсем без сжатия и часто имеют очень большой размер. Этот формат непрактичен для использования в интернете или для повседневного обмена, но ценится за возможность архивирования и хранения изображений в самом высоком качестве.
HEIC/HEIF — современные форматы, которые используются на многих смартфонах, особенно устройствах Apple. Они обеспечивают эффективное сжатие и могут хранить несколько изображений в одном файле (например, Live Photos). Недостатком является то, что совместимость этих форматов с не-Apple устройствами и старым ПО пока ограничена.
Как работает сжатие
Сжатие — это процесс, который уменьшает размер изображений, однако методы сжатия бывают разными. Используемая техника (без потерь или с потерями) напрямую влияет на итоговый размер файла и качество изображения.
Сжатие без потерь уменьшает размер файла без удаления какой-либо информации из изображения. Когда вы открываете файл, сжатый без потерь, вы видите то же самое изображение, что и до сжатия — ни одна деталь не теряется. Этот метод используется в таких форматах, как PNG, а также в некоторых настройках TIFF и WEBP. Сжатие без потерь необходимо, если важно сохранить каждый пиксель, например, для графики, логотипов, скриншотов или изображений, которые вы планируете редактировать несколько раз.
Сжатие с потерями позволяет гораздо сильнее уменьшить размер файла за счет безвозвратного удаления части данных изображения. Суть в том, чтобы избавиться от деталей, менее заметных для человеческого глаза, особенно на фотографиях. Этот подход используется в форматах JPEG и WEBP в режиме с потерями. Сжатие с потерями отлично подходит для фотографий, поскольку небольшие потери обычно незаметны, но не рекомендуется для изображений с текстом, резкими линиями и графикой — в этом случае могут появиться заметные дефекты, например, размытие. Кроме того, если многократно сохранять изображение в формате с потерями, качество будет ухудшаться с каждым сохранением.
Что происходит при конвертации формата
Конвертация изображения из одного формата в другой — это не просто смена расширения файла. Каждый формат хранит данные по-разному, и процесс преобразования может заметно влиять на размер файла, качество изображения и поддерживаемые функции.
Когда вы конвертируете изображение, приложение считывает данные из исходного файла и записывает их в новом формате согласно его правилам. Если вы переводите изображение между форматами с похожими возможностями (например, из PNG в WEBP без потерь), обычно видимых изменений нет или они минимальны. Но при конвертации между форматами с разными методами сжатия или поддержкой разных функций результат может быть очень разным.
Например, если перевести PNG (без потерь, с поддержкой прозрачности) в JPEG (с потерями, без поддержики прозрачности), будут удалены все прозрачные области и появятся артефакты сжатия. Итоговый файл будет меньше, но вы потеряете прозрачный фон, а резкие края или текст могут стать немного размытыми.
С другой стороны, если конвертировать JPEG в PNG, качество, потерянное при JPEG-сжатии, не восстановится. PNG просто сохранит всё, что осталось, включая размытие и артефакты JPEG, в файле большего размера. Поэтому преобразовывать JPEG в PNG имеет смысл только если вам нужна прозрачность и вы готовы доработать изображение вручную. В противном случае вы просто получите более крупный файл, который выглядит так же или даже хуже.
Важно помнить, что некоторые конвертации возможны только в одну сторону. Если детали были потеряны при сохранении в формате с потерями, их невозможно восстановить, просто перейдя на формат без потерь. Аналогично, при конвертации между форматами с разной поддержкой цвета или прозрачности часть информации может быть утеряна или изменена.
Почему изображения могут становиться больше после сжатия
Кажется логичным, что сжатие изображения всегда уменьшает размер файла. Однако иногда после сжатия или конвертации формата итоговый файл оказывается больше исходного. Это может сбивать с толку, но есть причины, почему так происходит.
Одна из типичных ситуаций — конвертация из формата с потерями (например, JPEG или WEBP с потерями) в без потерь (например, PNG или WEBP без потерь). В форматах с потерями много данных удаляется, чтобы уменьшить размер файла. Когда вы сохраняете такое изображение в формате без потерь, новый файл хранит каждый пиксель в том виде, в каком он выглядит после предыдущего сжатия, включая все дефекты и артефакты. Поскольку форматы без потерь ничего не удаляют, файл может стать значительно больше, хотя визуальное качество не улучшится.
Еще один вариант — когда исходное изображение уже сильно сжато. Если попытаться сжать его повторно, особенно с настройками без потерь, приложение вероятно не сможет удалить дополнительные данные. Иногда новый файл дополнительно содержит метаданные или менее эффективную структуру, что, наоборот, увеличивает размер файла. Также при уменьшении размера или редактировании могут появляться более сложные паттерны или шум, которые сложно эффективно сжать.
Это не ошибка и не неисправность приложения, просто так работают разные форматы и методы сжатия. Если ваша цель это уменьшить размер файла, всегда учитывайте исходный и целевой форматы, а также настройки сжатия.
Как выбрать правильный формат
Теперь, когда вам понятны основные различия между форматами изображений и методами сжатия, вы сможете легче подобрать оптимальный вариант для конкретной задачи.
Если вы готовите фотографии для публикации в соцсетях или отправки по электронной почте, чаще всего лучше всего использовать JPEG. Этот формат позволяет сделать файлы довольно маленькими, и его поддерживают почти все устройства. Просто избегайте многократного редактирования и сохранения одного и того же JPEG, это снижает качество.
Для графики сайтов, иконок интерфейса или изображений с прозрачным фоном обычно лучше подходит PNG. Он сохраняет четкие края и прозрачность, что важно для логотипов, кнопок и скриншотов.
Если вам важен минимальный размер файлов для веба и вы уверены, что ваша аудитория использует современные браузеры, используйте WEBP. Этот формат позволяет получить более компактные файлы при таком же визуальном качестве, как у JPEG или PNG, и поддерживает как сжатие с потерями, так и без потерь, а также прозрачность. Однако рекомендуем заведомо убедиться, что выбранная вами платформа поддерживает WEBP.
Когда нужно сохранить абсолютно все детали для дальнейшего редактирования или печати высокого качества, используйте форматы без потерь, например, PNG или TIFF. Они также подходят для архивирования исходников, несмотря на их большой размер.
Анимированные изображения это отдельный случай. GIF по-прежнему популярен для простых анимаций, но для лучшего качества и меньшего размера стоит предпочесть анимированный WEBP или даже видео-форматы (например, MP4), если они поддерживаются.
Помните: конвертация изображения из формата с потерями (например, JPEG) в формат без потерь (например, PNG) не восстанавливает потерянное качество и обычно увеличивает размер файла.
Если вы не уверены, сохраните копию и попробуйте разные форматы и настройки — сравните качество глазами и посмотрите на размер файлов. Это лучший способ подобрать оптимальный вариант для вашей задачи.