Как работает удаление EXIF
Файл JPEG — это последовательность тегированных сегментов, называемых APP-маркерами, начинающихся сразу после двухбайтовой сигнатуры SOI (0xFFD8). Данные EXIF хранятся в APP1, GPS — в том же блоке APP1 в виде под-IFD, а IPTC — в APP13. Инструмент обходит каждый маркер, определяет сегменты с метаданными, удаляет их и собирает оставшуюся полезную нагрузку в допустимый JPEG.
- Разбор APP-маркеров. Инструмент читает необработанный ArrayBuffer и побайтово обходит последовательность маркеров JFIF. Каждый двухбайтовый тег маркера определяет тип сегмента: APP0 (заголовок JFIF), APP1 (EXIF и XMP), APP13 (Photoshop и IPTC) и так далее до APP15. Парсер записывает смещение и длину в байтах каждого сегмента в небольшую таблицу, не затрагивая исходный буфер.
- Декодирование EXIF-тегов. Полезная нагрузка APP1 — мини-структура TIFF с четырьмя директориями файлов изображения: 0th IFD (основные атрибуты), Exif SubIFD (выдержка, объектив, фокусное расстояние, ISO), GPS IFD (широта, долгота, высота, направление) и 1st IFD (встроенная миниатюра). Каждый тег содержит числовой код, тип данных и значение. Инструмент сопоставляет числовые коды с человекочитаемыми именами через словарь тегов piexifjs и отображает их на панели метаданных, сгруппированных по IFD.
- Маркировка GPS-тегов. Любой тег из GPS IFD выделяется красным значком конфиденциальности. Широта и долгота хранятся в виде трёх рациональных чисел (градусы, минуты, секунды) плюс опорное направление (N или S, E или W). Инструмент переводит их в десятичные градусы со знаком с шестью знаками после запятой (~11 см на экваторе) и показывает результат на панели GPS вместе со ссылкой OpenStreetMap. Запрос тайлов не отправляется — ссылка генерируется локально и открывается только при нажатии.
- Удаление метаданных. Для файлов JPEG стандартный путь использует piexifjs для полного удаления сегмента APP1, возвращая новый dataURL с нетронутыми пиксельными данными. При включённой опции «Сохранить ориентацию» инструмент поворачивает изображение на
<canvas>согласно исходному значению тегаOrientation(1–8) перед удалением, чтобы визуальный результат соответствовал намерению камеры — поворот записывается в пиксели вместо использования флага метаданных. - Путь перекодирования через Canvas. При отключённой опции «Сохранить цветовой профиль ICC» инструмент рисует изображение на скрытом
<canvas>и вызываетcanvas.toBlob('image/jpeg', quality). Этот путь удаляет всё (EXIF, XMP, IPTC, цветовой профиль ICC, миниатюру) и позволяет управлять ползунком качества JPEG от 60 до 100. По умолчанию 92, что даёт файлы в пределах нескольких процентов от исходного размера при визуально неотличимом качестве на большинстве фотографий. - Скачивание чистого файла. Очищенный blob предлагается к скачиванию с именем
<original-name>-stripped.jpg. Инструмент повторно разбирает результат и подтверждает, что раздел EXIF GPS пуст, прежде чем появится ссылка для скачивания — так вы никогда не получите файл с меткой «stripped», в котором всё ещё есть геотег. Файлы PNG и WebP изначально не содержат EXIF; инструмент показывает сообщение «EXIF не найден» и пропускает шаг удаления для этих форматов.
Зачем удалять EXIF перед публикацией
- Конфиденциальность местоположения. Смартфоны по умолчанию встраивают точные GPS-координаты в каждую фотографию. JPEG из ресторана, офиса или дома содержит этот адрес в метаданных с точностью около пяти метров. Удалите GPS-тег перед публикацией в социальных сетях, отправкой незнакомцу или прикреплением к публичному тикету поддержки — и это отпечаток местоположения исчезнет полностью.
- Анонимность в публикациях. Журналисты, активисты и информаторы удаляют EXIF перед отправкой фотографий, поскольку серийный номер камеры, версия прошивки объектива и метка времени создания могут быть перекрёстно сверены с другими опубликованными изображениями для идентификации фотографа. Удаление этих тегов — базовая мера операционной безопасности для тех, чья подпись не должна быть привязана к конкретному физическому устройству.
- Уменьшение размера файла. Типичный JPEG со смартфона содержит 5–15 КБ метаданных в сегменте APP1, включая встроенную миниатюру 160×120. Это мало относительно 5 МБ фотографии, но удаление метаданных из партии 1000 изображений экономит 5–15 МБ на каждый цикл загрузки — полезно при обработке каталога товаров, библиотеки стоковых фото или экспорта Pinterest.
- Удаление отпечатка камеры. Марка и модель камеры, версия прошивки, идентификатор объектива и счётчик срабатываний затвора образуют отпечаток, который может связать фотографии из разных загрузок, даже если EXIF в остальном неприметен. Если вы делитесь изображениями, не раскрывая своё оборудование (отчёт об ошибке, конкурсная работа, анонимное портфолио), Exif SubIFD — это место, где хранится идентифицирующая информация. Удалите её — и связь будет разорвана.
Типичные сценарии использования
Удаление EXIF необходимо всякий раз, когда фотография меняет владельца, а содержащиеся в ней метаданные могут создать проблемы для отправителя или объекта съёмки.
- Загрузка в социальные сети: большинство платформ всё равно удаляют EXIF на стороне сервера, но очистка на стороне клиента означает, что исходные координаты никогда не попадают на серверы платформы. Если их конвейер когда-нибудь даст утечку (или попадёт под судебный запрос), исходных GPS-данных там не будет — потому что они никогда не были отправлены.
- Журналистика и документальная фотография: фотослужбы и редакции требуют чистых метаданных, чтобы атрибуция авторства и подписи контролировались редакцией, а не камерой. Фотредакторы крупных информагентств прогоняют входящие изображения через шаг очистки метаданных перед выходом в эфир.
- Объявления о недвижимости и листинги товаров: риелторы и продавцы регулярно загружают фотографии, сделанные на объекте или складе. Удаление GPS перед загрузкой исключает случайную публикацию точного адреса в файле объявления — полезно, когда склад — это частная квартира или объект ещё занят жильцами.
Практический пример
JPEG размером 3,5 МБ, снятый на современный iPhone, содержит около 12 КБ метаданных APP1: GPS-координаты с направлением и высотой, метку времени съёмки с точностью до миллисекунды, модель камеры и идентификатор объектива, настройки баланса белого и миниатюру 160×120. После удаления стандартным путём piexif файл весит 3,488 МБ — на 12 КБ легче, попиксельно идентичен оригиналу и без геозаписи. Панель GPS выше покажет именно те координаты, которые будут удалены, прежде чем вы скачаете файл.
Что такое EXIF-метаданные?
EXIF (Exchangeable Image File Format) — стандарт, определяющий, как цифровые камеры и смартфоны хранят метаданные внутри файлов изображений. Типичный JPEG со смартфона содержит марку и модель камеры, фокусное расстояние объектива, выдержку, ISO, точное GPS-местоположение (с точностью до нескольких метров), метку времени создания и небольшую встроенную миниатюру — всё это невидимо на самом изображении, но читается любым EXIF-совместимым приложением, включая файловый менеджер ОС и большинство фоторедакторов.
Зачем удалять EXIF перед публикацией фотографии?
GPS-тег раскрывает место съёмки с точностью до нескольких метров. Поделитесь фотографией, не удалив его, — и вы передадите это местоположение всем, кто получит файл. Серийные номера камер и идентификаторы объективов также могут создать отпечаток фотографа при разных загрузках, что важно для тех, кто публикуется под псевдонимом. Удаление устраняет всё это до того, как файл покинет ваше устройство.
Влияет ли это на качество изображения?
Стандартный путь piexif удаляет сегмент APP1, не затрагивая пиксели, поэтому качество побайтово идентично оригиналу. Путь перекодирования через canvas (используется при отключённой опции «Сохранить цветовой профиль ICC» или при включённой «Сохранить ориентацию» для повёрнутого изображения) перекодирует пиксели с выбранным значением ползунка качества JPEG — установите ползунок на 95 или выше для сохранения визуального результата, близкого к источнику на большинстве фотографий.
А как насчёт файлов HEIC с iPhone?
Удаление EXIF из HEIC зависит от нативной поддержки HEIC вашим браузером. Safari 13+ декодирует HEIC нативно; Chrome и Firefox — нет. Если браузер не может отобразить HEIC, сначала используйте опцию «Экспорт как JPEG» на телефоне (в iOS Фото: Поделиться → Параметры → Наибольшая совместимость), а затем загрузите JPEG сюда. Шаг удаления для конвертированного файла работает так же, как для любого другого JPEG.
Каждое удаление выполняется локально в вашем браузере. Оригинальная фотография никогда не попадает ни на какой сервер, а очищенный файл создаётся полностью из ArrayBuffer, загруженного в память при открытии файла. Бросьте фотографию выше, просмотрите метаданные и скачайте очищенную копию.