Конвертировать 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/.

Другие вопросы по тегам