Почему телефон вообще снимает в HEIC
С iOS 11 айфон по умолчанию пишет фотографии в HEIC — контейнер HEIF с кадром, сжатым кодеком HEVC. Он примерно вдвое экономнее JPEG при том же качестве, и на самом телефоне всё прекрасно. Проблемы начинаются за его пределами: на Windows кодек нужно доустанавливать, часть сайтов такой файл не принимает, а редакторы открывают через раз. Отсюда и задача: получить обычный JPG.
Как это работает у нас
HEIC декодируется библиотекой libheif, собранной в WebAssembly, — она подгружается только когда вы действительно принесли такой файл. Дальше картинка идёт обычным путём: декод → ресайз → кодирование JPEG (mozjpeg). Браузер сырой HEIC показать не умеет, поэтому для превью «до» мы декодируем кадр отдельно — сравнение слева/справа честное.
Проверено на настоящем снимке с iPhone (4536×8064, портрет): 1.95 МБ → 437 КБ, −78%, ориентация правильная — поворот из метаданных применяется при декоде.
Приватность здесь не абстрактная
В фотографии с телефона лежат координаты съёмки, время, модель аппарата и серийные идентификаторы. Обычные онлайн-конвертеры загружают такой файл к себе на сервер целиком. Мы не загружаем ничего: обработка идёт в вашей вкладке, а EXIF и GPS в выходной JPG не переносятся.
FAQ
Сколько фотографий можно закинуть разом?
До 100 за раз. Настройте один снимок, нажмите «Применить ко всем» — и заберите zip.
Живое фото (Live Photo) сконвертируется?
Возьмётся основной кадр — видеодорожка Live Photo хранится отдельным файлом и в HEIC не входит.
А можно в PNG или WebP вместо JPG?
Да, формат переключается кнопкой. Для веба обычно выгоднее WebP, для загрузки в форму — JPG.
Нужно ставить приложение?
Нет, ни программы, ни расширения, ни регистрации — обычная страница в браузере. Декодер HEIC подгружается сам, когда вы приносите такой файл.