HEIC
На карте почти не было точек в UK, где я живу последние несколько лет. Как только я переехал в UK, я купил себе свой первый iPhone, а он сохраняет фотографии в формате, который не любит никто кроме Apple – HEIC. Яндекс Диск умеет его отображать в UI, но API не отдаёт никакие метаданные из таких файлов.
Знаете ли вы, что формат HEIF, который служит контейнером для HEIC, предложил вовсе не Apple, а Nokia. Интересно, выпускает ли ещё Nokia телефоны?
Получается, чтобы узнать, где был сделан снимок, придётся сначала сохранить его к себе локально, и только потом уже прочитать его метаданные. Выгружать десятки гигабайт картинок мне не хотелось, поэтому пришлось придумать что-то получше.
В документации от Nokia я заметил, что метаданные находятся в начале файла. Это дало мне надежду, так как вместо скачивания всего файла можно прочитать только первые несколько сотен байт и получить нужную информацию из них. Вместо выгрузки гигабайтов данных, можно обойтись несколькими мегабайтами, что уже вполне преемлемо.
Реализовать это оказалось очень просто. Берём Java библиотеку для чтения HEIF, и вместо InputStream-а локального файла, передаём ей поток байтов из HTTP. Всё сработало лучше, чем я ожидал. Полиморфизм – это охуенно!
Исходный код проекта можно найти в моём GitHub репозитории.
Post #51
193

- 🔥 3
- ❤ 1
- ❤🔥 1
- 🤯 1