图片预览 压缩

2019-11-15  本文已影响0人  Mr丶T

function changepic(fileDom){

    var reads= new FileReader();

    f=fileDom.files[0];

    reads.onload=function (e) {

        compress(e.target.result, 500, 0.5).then(function (val) {

        $('#uploadimg').attr("src",val);

        });

    };

    reads.readAsDataURL(f);

}


function compress(base64String, w, quality) {

    var getMimeType = function (urlData) {

        var arr = urlData.split(',');

        var mime = arr[0].match(/:(.*?);/)[1];

        return mime;

    };

    var newImage = new Image();

    var imgWidth, imgHeight;

    var promise = new Promise(resolve => newImage.onload = resolve);

    newImage.src = base64String;

    return promise.then(() => {

        imgWidth = newImage.width;

        imgHeight = newImage.height;

        var canvas = document.createElement("canvas");

        var ctx = canvas.getContext("2d");

        if (Math.max(imgWidth, imgHeight) > w) {

            if (imgWidth > imgHeight) {

                canvas.width = w;

                canvas.height = w * imgHeight / imgWidth;

            } else {

                canvas.height = w;

                canvas.width = w * imgWidth / imgHeight;

            }

        } else {

            canvas.width = imgWidth;

            canvas.height = imgHeight;

        }

        ctx.clearRect(0, 0, canvas.width, canvas.height);

        ctx.drawImage(newImage, 0, 0, canvas.width, canvas.height);

        var base64 = canvas.toDataURL(getMimeType(base64String), quality);

        return base64;

    });

}

上一篇 下一篇

猜你喜欢

热点阅读