Что на самом деле находится внутри фото

Откройте любое фото прямо с телефона, и картинка — это только часть файла. Вокруг нее находится блок метаданных, который камера записала в тот же момент: марка и модель устройства, объектив, настройки экспозиции, точная секунда срабатывания затвора, версия операционной системы и — когда включены службы геолокации — широта и долгота места, где вы находились, обычно с точностью до нескольких метров.

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

Инструмент выше считывает этот блок и показывает его вам перед удалением чего-либо, потому что аргументом являются числа. «В этом фото есть метаданные EXIF» звучит абстрактно. А пара координат, указывающая на вашу входную дверь — нет.

Удаление байтов, а не перекодирование

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

Простой способ — отрисовать картинку на холсте HTML и сохранить её заново. Метаданные исчезают, потому что на холсте их никогда и не было. Однако это также заново сжимает картинку — второй цикл сжатия JPEG с потерями поверх того, что сделала камера, — и отбрасывает встроенный цветовой профиль. В результате «очищенный» файл получается заметно хуже оригинала, а его цвета меняются. Большинство бесплатных инструментов для удаления метаданных работают именно так, и именно поэтому возвращаемый файл часто имеет другой размер и немного отличается визуально.

Этот инструмент работает иначе. JPEG — это последовательность сегментов маркеров; PNG — последовательность чанков; WebP — контейнер RIFF. Метаданные находятся в специфических, идентифицируемых сегментах в каждом из них: блоки APPn в JPEG, чанки eXIf, tEXt, iTXt, zTXt и tIME в PNG, чанки EXIF и XMP в WebP. Их удаление сводится к прохождению по структуре самого файла, пропуску этих блоков и копированию всего остального без изменений.

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

Что мы не удаляем и почему

Две вещи намеренно сохраняются, и обе показаны вам с галочками на случай, если вы не согласны.

Цветовой профиль. Профиль ICC описывает, в каком цветовом пространстве закодированы пиксели. Современные телефоны снимают с широким цветовым охватом, и фото с широким цветовым охватом без своего профиля интерпретируется как обычный sRGB и отображается неправильно — обычно блеклым, а иногда кричащим. Профиль описывает изображение, а не фотографа, поэтому по умолчанию он остается.

Флаг ориентации, когда фото в нем нуждается. Телефоны не поворачивают пиксели при повороте камеры; они сохраняют фото так, как его увидел сенсор, и записывают одно число EXIF, указывающее, какой стороной его отображать. Если удалить это число, чистая копия в любом приложении, которое его учитывает, будет отображаться боком. Когда фото зависит от него, этот инструмент восстанавливает минимальный блок, содержащий только это единственное значение и ничего больше — ни камеры, ни времени, ни местоположения.

В какой ситуации оказываются остальные ваши фото

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

Именно для этой половины существует Vaultine: зашифрованный сейф, где файлы блокируются с помощью алгоритма AES-256-GCM на самом устройстве, открываются во встроенном защищенном просмотрщике, а не расшифровываются на диск, и разблокируются рисунком или PIN-кодом, а не аккаунтом. Это другая задача, отличная от той, что на этой странице — Vaultine хранит файлы, он не редактирует их метаданные — но это две половины одного и того же инстинкта. Фото, которыми вы делитесь, выдают, где вы были. Фото, которые вы храните, должны быть заблокированы.