Преобразовать HEIF (.heic) в JPEG на сервере?

Apple представила новый формат изображений в iOS 11 под названием HEIF (расширение файла .heic). Я знаю, что вы можете экспортировать изображения в формате JPG с устройств iOS, но я хочу загрузить файлы HEIC на свой сервер и преобразовать их там в файлы JPEG, которые можно будет отображать на всех других устройствах.

Может ли кто-нибудь порекомендовать хороший и эффективный способ добиться этого?

ОТВЕЧАТЬ:

Поскольку этот вопрос был закрыт, я отредактирую свой ответ здесь для остальных. Теперь мы используем эту библиотеку для преобразования HEIC в JPEG: https://github.com/monostream/tifig

Также ImageMagick теперь поддерживает преобразование HEIC в JPEG благодаря ответвление от @toshic

Спасибо @monostream и @toshic за ваш большой вклад!

EDIT1: отредактировал формулировку вопроса, чтобы она была более конкретной и соответствовала рекомендациям SO.

EDIT2: добавлен ответ, так как эта тема закрыта:/


person Christian    schedule 02.08.2017    source источник
comment
На сервер он будет загружен как формат данных, поэтому вы можете работать и поддерживать данные в формате Jpg на сервере и на стороне клиента, т.е. Устройство, преобразование которого будет обрабатываться локально, а формат может быть оценен с помощью метаинформации.   -  person Abhishek Thapliyal    schedule 03.08.2017
comment
@AbhishekThapliyal Я думаю, вы неправильно поняли. Да, я отправляю изображение в виде данных на сервер, но чтобы иметь возможность отображать его в обычных браузерах и клиентах, не поддерживающих HEIC, я хочу сначала преобразовать его в JPEG на сервере. Это не то, что я хочу делать с клиентами.   -  person Christian    schedule 07.08.2017
comment
CloudConvert поддерживает преобразование этих файлов HEIC в JPG: cloudconvert.com/heic-to-jpg. У них также есть API с PHP/node.js/Python SDK.   -  person monday    schedule 21.09.2017
comment
Хотелось бы, чтобы они открыли исходный код :)   -  person Christian    schedule 22.09.2017
comment
Я тоже хотел бы это знать. Я думаю, что удержание должно быть удалено.   -  person Tom Kincaid    schedule 17.10.2017
comment
См. мой ответ здесь   -  person Digger    schedule 06.11.2017
comment
github.com/monostream/tifig   -  person Flask    schedule 09.11.2017
comment
После добавления соответствующих кодеков/библиотек: libheif-examples и libheif-dev, я самостоятельно скомпилировал imagemagick для проверки инструкций. Imagemagick на ubuntu. Я также установил необходимый graphicmagick, так как я использую библиотеку gm nodejs для преобразования. Код Nodejs: imageMagick(sample.heic).setFormat(jpg).write(sample.jpg, function (err) { console.log(Завершено сохранение, ошибка); });   -  person Aneel Ansari    schedule 01.08.2018
comment
Совершенно по теме вопроса. Актуально спустя 2 года. Правило stackoverflow, касающееся рекомендаций библиотек, должно контролироваться более разумно. Это вряд ли спровоцирует религиозные дебаты о том, следует ли мне использовать Angular или React, и, поскольку большинство проблем программирования решаются с помощью библиотек, кому-то здесь нужно облегчиться.   -  person Greg Woods    schedule 12.08.2020


Ответы (2)


Это сложно, потому что iOS 11 фактически хранит фрагменты изображений, закодированных HEVC, в контейнере HEIF, но есть демонстрация, использующая библиотеку nokia для их извлечения, ffmpeg для их декодирования, а затем сшивание их в один jpeg с помощью imagemagick в репозитории heiftest. из поврежденной плитки HEIC при преобразовании в JPEG

У нас также есть рабочий вариант, который вы можете использовать, клонировав https://github.com/pushd/heif и тогда:

cmake CMakeLists.txt && make && Bins/heiftojpeg test_001.heic test_001.jpg
person Eric Jensen    schedule 13.09.2017
comment
Это вроде как мы делаем это сегодня. Голос за вас! - person Christian; 22.09.2017
comment
Я получаю terminate called after throwing an instance of 'std::out_of_range' what(): vector::_M_range_check: __n (which is 853) >= this->size() (which is 853) Aborted (core dumped), когда запускаю его. - person Petah; 28.09.2017
comment
Это выглядит как хорошее решение, но я не могу его построить. Я получаю /path/to/heif/Srcs/common/iteminfobox.hpp:105:5: ошибка: неиспользуемый параметр ‘itemInfoEntry’ [-Werror=unused-parameter] - person Tom Kincaid; 17.10.2017
comment
github.com/monostream/tifig был бы альтернативой, и это немного быстрее, чем pushd/heif - person Flask; 09.11.2017

В настоящее время нет такой библиотеки для преобразования изображений на сервере для HEIF в JPEG, ImageMagick до сих пор не поддерживает это.

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

У Nokia есть реализация JavaScript для чтения HEIF, с которой вы можете ознакомиться: глава Nokiaatech

Альтернативный: вы можете попробовать этот веб-сайт, если он работает.

Запрос функции для ImageMagick

person bhansa    schedule 04.10.2017