6

有人尝试将heic转换为jpg吗?

我查看了官方存储库,但我不明白它是如何工作的。存储库中的所有示例都可以正常工作。但是当我尝试处理我在 iphone 上制作的照片时,脚本拒绝处理它。

4

2 回答 2

7

我最近在使用 libheif 进行转换时遇到了一些运气。所以我做了这个库,它应该会大大简化整个过程

https://github.com/alexcorvi/heic2any

唯一需要注意的是,生成的 PNG/JPG 不保留原始 HEIC 中的任何元数据。

于 2019-06-07T11:31:18.903 回答
4

我设法在 heic2any js 库的帮助下将 heic 转换为 jpg ( 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。转换时可能会出现一些延迟,因此我在上传时放置了一个加载器 gif。

于 2021-04-12T16:09:42.597 回答