Как конвертировать формат heic в jpg, используя js, или php?

Ребята, кто-нибудь уже пробовал конвертировать эти форматы?

Пытаюсь конвертировать heic формат в один из популярных(jpg, png). Все делаю как в официальном репозитории этого формата:
Загрузка ридера
HEIFReader reader = new HEIFReader('test.heic');
reader.requestFileInfo(function(payload) {
  if(payload.success !== true) {
    console.error("Could not read file:", url);
  } else {
    var fileInfo = payload;
    console.log("FileInfo contents:", fileInfo);
  }
});
Получение данных heic файла
// META file containing still images
if (fileInfo.rootLevelMetaBoxProperties) {
  var masterContextId = fileInfo.rootLevelMetaBoxProperties.contextId;
  var masterItemIds = [];
  var imageFeaturesMap = fileInfo.rootLevelMetaBoxProperties.imageFeaturesMap;
  for (i in imageFeaturesMap) {
    if (imageFeaturesMap.hasOwnProperty(i) && imageFeaturesMap[i].isMasterImage === true) {
      masterItemIds.push(parseInt(i));
    }
  }

  console.log("Master images in the file:", masterItemIds);
}
Декодирование heic файла
/** Request decoded image data for given item id's.
 *  @param {number} contextId Id of the context.
 *  @param {Array.<number>} itemIds Array of item id's to be decoded.
 *  @param {function} callback Callback function that receives the payload as a parameter. */
this.requestImageData = function (contextId, itemIds, callback) {
  console.log(_name + ": REQUEST IMAGE DATA: " + itemIds);

  if (itemIds.constructor !== Array) {
    itemIds = [itemIds];
  }

  if (itemIds.length < 1) {
    return;
  }

  var stream = new Uint8Array();
  var decodeIds = [];
  var dependencies = {};
  var displayDependencies = {};
  for (var i = 0; i < itemIds.length; i++) {
    var refs = self._heifReader.getItemDecodeDependencies(contextId, itemIds[i]);
    for (var j = 0; j < refs.length; j++) {
      if (refs[j] !== itemIds[i]) {
        // Add dependency data to the stream if the id is not already listed in dependencies
        if(!(refs[j] in dependencies) && !(refs[j] in displayDependencies)) {
          dependencies[refs[j]] = true;
          stream = _appendBuffer(stream, new Uint8Array(self._heifReader.getItemDataWithDecoderParameters(contextId, refs[j])));
          decodeIds.push(refs[j]);
        }
      } else {
        // Item has itself as dependency => we want to display that item despite being a dependency
        displayDependencies[refs[j]] = true;
      }
    }
  }

  // Add data of the actual items to the stream (that already contains dependency data)
  for (i = 0; i < itemIds.length; i++) {
    stream = _appendBuffer(stream, new Uint8Array(self._heifReader.getItemDataWithDecoderParameters(contextId, itemIds[i])));
    decodeIds.push(itemIds[i]);
  }

  var payload = new Payload(true, [], 0, 0);
  self._hevcDecoder.pushRequestContext(new RequestContext(callback, decodeIds, stream, dependencies, payload));
  self._hevcDecoder.decode();
};

Самое странное начинается в строчке
self._hevcDecoder.decode();
В Wiki этого репозитория написано:
HevcDecoder decodes hevc encoded stream to RGBA image data.

Но по-сути я не получаю набор данных RGBA. Я получаю объект HevcDecoder(). Но как оттуда вытащить мои данные.

Если кто-нибудь пробовал конвертировать, помогите. А то я уже неделю сижу над этим(
  • Вопрос задан
  • 2729 просмотров
Пригласить эксперта
Ответы на вопрос 1
@HEICX
Конвертируйте изображения HEIC в формат JPG легко с помощью нашего бесплатного онлайн-инструмента - Heic to JPG Converter. Регистрация не требуется, быстро и безопасно.
The website Heicx provides services for HEIC files, such as:

Heic to JPG Converter
Heic to JPEG Converter
Heic to PNG Converter
Heic to PDF Converter
Heic to GIF Converter
Heic to MP4 Converter
Heic to RAW Converter
Heic to AVIF Converter
Heic to Webp Converter
Heic Viewer
Heic Exif Viewer
Heic Exif Editor
Heic Metadata Viewer
Heic Metadata Editor
Heic Compressor
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы