手记

图片转base64方法

需求背景:
需要做一下下载图片的功能,调用的是app的保存功能,app提供的jsbridge不支持传url,结果就有了这个附加需求。

这里还有一个要把canvas设置成白色,因为我获取的图片是png的,都是透明图,是小程序码,安卓手机下载下来是透明的,搜不上,ios到是白色的,所以为了兼容,还是加上个白色背景吧。

来,直接上码

getBase64Image(img) {//图片转码base64
			var canvas = document.createElement("canvas");  
			canvas.width = img.width;  
			canvas.height = img.height;  
			var ctx = canvas.getContext("2d");  
			// 将canvas的透明背景设置成白色
			var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
			for(var i = 0; i < imageData.data.length; i += 4) {
			// 当该像素是透明的,则设置成白色
				if(imageData.data[i + 3] == 0) {
					imageData.data[i] = 255;
					imageData.data[i + 1] = 255;
					imageData.data[i + 2] = 255;
					imageData.data[i + 3] = 255;
				}
			}
			ctx.putImageData(imageData, 0, 0);
			ctx.drawImage(img, 0, 0, img.width, img.height);  
			var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();  
			// console.log(canvas)
			var dataURL = canvas.toDataURL("image/"+ext);  
			return dataURL;  
		}

image.onload = function(){  //要在图片加载完了再调用方法
	var base64 = self.getBase64Image(image);  
	console.log(base64)
}						
1人推荐
随时随地看视频
慕课网APP