Конвертировать HEIC в JPG, используя php или JS
Кто-нибудь пытался преобразовать Heic в JPG?
Я посмотрел на официальный репозиторий, но я не понял, как он работает. Все примеры в репозитории работают. Но когда я пытаюсь обработать мою фотографию, сделанную на iphone, скрипт отказывается ее обрабатывать.
3 ответа
Недавно мне повезло с преобразованием с помощью libheif. Итак, я сделал эту библиотеку, которая должна значительно упростить весь процесс.
https://github.com/alexcorvi/heic2any
Единственное предостережение заключается в том, что результирующий PNG/JPG не сохраняет никаких метаданных, которые были в исходном HEIC.
Мне удалось преобразовать heic в jpg с помощью библиотеки heic2any js (https://github.com/alexcorvi/heic2any/blob/master/docs/getting-started.md)
Я преобразовал изображение на стороне клиента, затем передал его на вход на стороне клиента. Сервер видит его так, как оно было изначально загружено как jpg.
function convertHeicToJpg(input)
{
var fileName = $(input).val();
var fileNameExt = fileName.substr(fileName.lastIndexOf('.') + 1);
if(fileNameExt == "heic") {
var blob = $(input)[0].files[0]; //ev.target.files[0];
heic2any({
blob: blob,
toType: "image/jpg",
})
.then(function (resultBlob) {
var url = URL.createObjectURL(resultBlob);
$(input).parent().find(".upload-file").css("background-image", "url("+url+")"); //previewing the uploaded picture
//adding converted picture to the original <input type="file">
let fileInputElement = $(input)[0];
let container = new DataTransfer();
let file = new File([resultBlob], "heic"+".jpg",{type:"image/jpeg", lastModified:new Date().getTime()});
container.items.add(file);
fileInputElement.files = container.files;
console.log("added");
})
.catch(function (x) {
console.log(x.code);
console.log(x.message);
});
}
}
$("#input").change(function() {
convertHeicToJpg(this);
});
Что я делаю, так это конвертирую изображение heic в jpg, а затем просматриваю его. После этого я добавляю его к исходному вводу. Серверная сторона будет рассматривать его как загруженный файл jpg. При конвертации может возникнуть некоторая задержка, поэтому при загрузке я разместил гифку загрузчика.
Используйте онлайн-конвертер, например https://www.jpgheic.com/. Или, если вы хотите использовать какой-либо API, вы можете использовать для него API с https://www.online-convert.com/.