Как конвертировать формат 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.} 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 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(). Но как оттуда вытащить мои данные.
Если кто-нибудь пробовал конвертировать, помогите. А то я уже неделю сижу над этим(

21 Авг 2019 в 06:24
462 +1
0
Ответы
1

Для конвертации формата HEIC в JPG или PNG с помощью JavaScript или PHP можно воспользоваться готовыми библиотеками или инструментами. Например, вот один из способов с использованием JavaScript:

На клиентской стороне, вы можете использовать JavaScript библиотеку heic2any для конвертации HEIC изображений в другие форматы. Вы можете найти библиотеку здесь: https://github.com/catdad-experiments/heic2any. Пример кода:const fs = require('fs');
const convert = require('heic2any');
convert({
// input can be a readable stream, buffer, or an object with input stream and metadata
// See `@natcl/node-heif` `decode` docs for more information
// https://github.com/catdad-experiments/heic2any
// Must have `buffer` set to `false` to continue using the same input path
// Can pictures have transparency?☝️☝️☝️
input: fs.createReadStream('my_picture.heic'),
// All metadata if provided to `input` option, will be discarded
quality: 1,
// specify either a mime type of output (image/jpeg, image/png)
// or a command that will read the input
output: 'image/jpeg',
}).then((file) => {
fs.writeFileSync('my_picture.jpg', file);
});На серверной стороне вы можете использовать PHP библиотеку php-gd для конвертации изображений. Пример кода:<?php
// Specify the path to your HEIC file
$filename = 'example.heic';
// Create an image resource from the HEIC file
$source = imagecreatefromheic($filename);
// Specify the path where you want to save the converted JPG file
$destination = 'example.jpg';
// Save the image resource to the destination path
imagejpeg($source, $destination, 100);
// Free up memory by destroying the image resource
imagedestroy($source);
echo 'Conversion complete!';
?>

Надеюсь, это поможет вам конвертировать формат HEIC в JPG или PNG в вашем проекте. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

20 Апр в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 852 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир