实现将图片转base64字符串

最近在做项目的时候,想调用一个接口。接口中一个参数要求需要图片的base64字符串,所以下面整理了一下图片转base64字符串的方法:

方法1:(根据图片路径)

var image = new Image();  
image.src = imgurl; //imgurl 就是你的图片路径   
image.onload = function(){  
  var base64 = getBase64Image(image);  
  console.log(base64);  
}    



function GetBase64Image(img) {
    var canvas = document.createElement("canvas");
    canvas.width = img.width;
    canvas.height = img.height;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(img, 0, 0, img.width, img.height);
    var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
    var dataURL = canvas.toDataURL("image/" + ext);
    return dataURL;
}

方法2:(根据上传图片)

<input type="file" id="testFile" />
//上传的图片
$('#testFile').change(function (e) {
    if (!this.files[0].type.match(/image.*/)) {
        alert('请上传图片格式的文件!');
        return false;
    } 
    var filemaxsize = 1024 * 4; //4M
    var Size = this.files[0].size / 1024;
    if (Size > filemaxsize) {
         alert('上传图片不能超过4M,请重新上传!');
         return false;
    } 
    //获取图片的base64编码
    var reader = new FileReader();
    reader.readAsDataURL(this.files[0]); // 读出base64
    var dataURL = reader.result;//base64              
});

补充:

1、调用接口时要求base64没有头部(data:image/png;base64,),需将头部去掉(在js中去掉或在后台逻辑去掉)

dataURL.substring(dataURL.indexOf(",") + 1);

2、调用接口时要求base64不能超过4M,需要判断

var maxSize = 1024 * 1024 * 4; //4M 的字节
if(dataURL.length > maxSize) {
    alert("base64超出4M!");
}

3、如何获取图片的长和宽

var image = new Image();  
image.src = imgurl; //imgurl 就是你的图片路径 

alert('图片宽度:' + image.width + ',图片高度:' + image.height);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章