← Руководства

Как удалить метаданные без потери качества: почему перекодирование — это не очистка

Удалить метаданные фотографии можно двумя способами. Первый — вынуть блоки данных и оставить изображение как было. Второй — открыть фотографию, нарисовать её заново и снова сохранить: метаданные по дороге теряются, но меняется и изображение. А иногда метаданные даже не теряются.

Автор:

Что такое перекодирование

JPEG или HEIC хранят изображение со сжатием с потерями: при сохранении отбрасывается информация, которую глаз почти не замечает. Если кто-то откроет фотографию и сохранит её снова, это сжатие применится ещё раз поверх предыдущего, и изображение потеряет ещё немного. После одного раза это трудно заметить; после нескольких появляются блоки, грязные края и блёклые цвета.

Многие инструменты удаляют метаданные именно так, потому что это проще всего запрограммировать: они рисуют фотографию на холсте и экспортируют её заново. Это работает, но не бесплатно.

Что мы измерили

Мы взяли тестовую фотографию 3024 × 4032 с GPS и обработали её тремя способами. Проценты зависят от конкретной фотографии — снимок с большим количеством деталей теряет больше, чем наш, гладкий, — так что важно то, что меняется, а что нет:

  • Перерисовка в браузере, как делают многие простые сайты: изменились 1,8 % пикселей, а файл уменьшился с 925 до 742 КБ. GPS удалён, но фотография перекодирована.
  • Повторное сохранение инструментом для изображений из macOS (sips) с качеством 85: изменились 16,8 % пикселей, а GPS сохранился. Перекодирование — это не очистка.
  • С KillEXIF: не изменился ни один пиксель. Данные изображения те же, байт в байт, а GPS исчез.
  • Десять сохранений подряд с качеством 90: отличие от оригинала росло с каждым. Вот почему важно не перекодировать: каждый раз, когда фотография проходит через такой инструмент, она теряет ещё немного.

Как понять, перекодирует ли инструмент

Есть признаки, для которых ничего не нужно измерять:

  • Размер сильно меняется. Удаление метаданных экономит несколько килобайт, иногда чуть больше, если была миниатюра. Если фотография в 3 МБ выходит в 2 МБ, её пережали.
  • Он предлагает выбрать «качество» при сохранении. Если есть качество, есть и сжатие.
  • Меняется формат: если вы даёте HEIC, а получаете JPEG, всё изображение было закодировано заново.
  • Это занимает столько же времени, сколько обработка изображения: удаление блока метаданных происходит почти мгновенно, а пережатие большой фотографии — нет.

Что делает KillEXIF

KillEXIF удаляет метаданные, не трогая изображение: он находит блоки данных внутри файла, вынимает их и копирует всё остальное как есть. Затем перечитывает очищенный файл, чтобы убедиться, что ушло всё, что должно было уйти, и сообщает об этом: «Проверено: ничего важного не осталось». А если что-то нельзя удалить, не сломав файл, он объясняет это, вместо того чтобы пережимать.

Поэтому очищенная фотография весит почти столько же, сколько оригинал, и её можно очищать сколько угодно раз, ничего не теряя. То же касается видео: метаданные уходят, а видео заново не кодируется.