美文网首页
图片压缩转base64

图片压缩转base64

作者: yiqian091 | 来源:发表于2018-10-11 18:57 被阅读0次

//公司环境上传

var base64OssFileArray ='';

var newEnvironmentImgArray ='';

layui.use(['upload','form'], function () {

var $ =layui.jquery,

        upload =layui.upload,

        form =layui.form;

    var uploadInst = upload.render({

elem:'#phone',

        auto:false,

        multiple:true,

        //size:2048,

        number:5,

        choose:function(obj){

var num = $('.phone').length;

            obj.preview(function (index, file, result) {

if(file.size >0){

photoCompress(file,{quality:0.2},function (base64Codes) {

if(num>4){

return;

                        }else{

var phoneList =

'<li>'+

'<img class="phone" src="'+base64Codes+'" alt="">'+

'<div>'+'×'+'</div>'+

'</li>';

                            $('.phoneList ul').append(phoneList);

                        }

num++;

                    });

                }

});

        }

});

});

//上传图片压缩

function photoCompress(file,w,objDiv){

var ready=new FileReader();

    /*开始读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含一个data: URL格式的字符串以表示所读取文件的内容.*/

    ready.readAsDataURL(file);

    ready.onload=function(){

var re=this.result;

        canvasDataURL(re,w,objDiv)

}

}

function canvasDataURL(path, obj, callback){

var img =new Image();

    img.src = path;

    img.onload =function(){

var that =this;

        // 默认按比例压缩

        var w = that.width,

            h = that.height,

            scale = w / h;

        w = obj.width || w;

        h = obj.height || (w / scale);

        var quality =0.7;  // 默认图片质量为0.7

//生成canvas

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

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

        // 创建属性节点

        var anw =document.createAttribute("width");

        anw.nodeValue = w;

        var anh =document.createAttribute("height");

        anh.nodeValue = h;

        canvas.setAttributeNode(anw);

        canvas.setAttributeNode(anh);

        ctx.drawImage(that, 0, 0, w, h);

        // 图像质量

        if(obj.quality && obj.quality <=1 && obj.quality >0){

quality = obj.quality;

        }

// quality值越小,所绘制出的图像越模糊

        var base64 = canvas.toDataURL('image/jpeg', quality);

        // 回调函数返回base64的值

        callback(base64);

    }

}

相关文章

网友评论

      本文标题:图片压缩转base64

      本文链接:https://www.haomeiwen.com/subject/pvciaftx.html