在移动端与服务端的交互过程中,经常会遇见移动端上传图片到服务端的情况;将图片转成base64字符串然后和服务端交互,可以有效的减少HTTP数据请求,减少与服务端的数据交互; 将图片转换成base64字符串,主要使用的canvas: ①使用canvas必须在界面上创建canvas:
<canvas id="photo" style="display: none;"></canvas> //创建 canvas 控件②利用canvas 重绘,将图片文件转换成base64编码字符串
var image = new Image(); image.src = s; //s是图片的路径 image.onload = function() { //image.onload是等待图片加载完毕,等待图片加载完毕之后,才能对图片进行操作 var width = image.width;//根据图片的宽高,将图片进行压缩 var height = image.height; if(width > height) { height = Math.round(500 * width / height); width = 500; } else { width = Math.round(500 * width / height); height = 500; } var canvas = document.getElementById("photo"); var cax = canvas.getContext('2d'); canvas.width = width; canvas.height = height; cax.drawImage(image, 0, 0, width, height);//重绘 var dataUrl = canvas.toDataURL("image/png");//dataUrl 即为base编码字符串 }③转换成功之后,得到的是一个字符长串;data:image/jpg;base64,·······;然后将得到的base64字符串上传到服务器,服务端得到之后将其解码,即可得到上传的图片;