导出HTML5 Canvas图片,并上传服务器
2016-11-18 17:10
316 查看
最近接触的项目中,经常遇到需要canvas绘制图片的需求,比如拼图,比如图片编辑等。canvas处理后的图片必然涉及到保存, 因此,下面方法也许是你需要的~
思路: 1.使用 toDataURL()方法导出canvas图片,此时得到base64的数据 2.将base64数据封装blob对象 3.组装FormData 4.ajax上传 当然,上传过程需要服务端的童鞋来配合,比如设置跨域,比如约定字段。。。 一个简陋的demo:
function handleSave () { //导出base64格式的图片数据 var mycanvas = document.getElementById("mycanvas"); var base64Data = mycanvas.toDataURL("image/jpeg", 1.0); //封装blob对象 var blob = dataURItoBlob(base64Data); //组装formdata var fd = new FormData(); fd.append("fileData", blob);//fileData为自定义 fd.append("fileName", "123jpg");//fileName为自定义,名字随机生成或者写死,看需求 //ajax上传,ajax的形式随意,JQ的写法也没有问题 //需要注意的是服务端需要设定,允许跨域请求。数据接收的方式和<input type="file"/> 上传的文件没有区别 var xmlHttp = new XMLHttpRequest(); xmlHttp.open("POST", “你发送上传请求的url”); xmlHttp.setRequestHeader("Authorization", 'Bearer ' + localStorage.token);//设置请求header,按需设定,非必须 xmlHttp.send(fd); //ajax回调 xmlHttp.onreadystatechange = () => { //todo your code... }; }; function dataURItoBlob (base64Data) { var byteString; if (base64Data.split(',')[0].indexOf('base64') >= 0) byteString = atob(base64Data.split(',')[1]); else byteString = unescape(base64Data.split(',')[1]); var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0]; var ia = new Uint8Array(byteString.length); for (var i = 0; i < byteString.length; i++) { ia[i] = byteString.charCodeAt(i); } return new Blob([ia], {type: mimeString}); };另外,如果需要获取图片的宽高,请参考http://blog.csdn.net/wuchengzhi82/article/details/21466445
相关文章推荐
- HTML5 本地裁剪图片并上传至服务器 canvas图片上传 canvas图片裁剪
- HTML5 Canvas前台压缩图片并上传到服务器
- HTML5开发笔记:初窥CANVAS,上传canvas图片到服务器
- 使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe)
- HTML5 本地裁剪图片并上传至服务器(老梗)
- html Jcrop+canvas实现前端裁剪图片,并上传到服务器
- html5 canvas上传图片后预览
- 使用 html5 FileReader 获取图片, 并异步上传到服务器 (不使用 iframe)
- 使用 html5 FileReader 获取图片, 并异步上传到服务器
- HTML5移动端实现选择裁剪图片并且ajax上传服务器
- HTML5上传图片预览(不需通过服务器)
- html5 canvas实现在线生成图片后保存到服务器(数据库)
- HTML5 本地裁剪图片并上传至服务器(转)
- 基于html5 canvas 的客户端异步上传图片的插件,支持客户端压缩图片尺寸
- 关于如何把canvas中的内容转换为图片上传到服务器的操作过程
- HTML5 本地裁剪图片并上传至服务器
- java POI导出excel(带有图片的数据)以及ftp上传图片到另一台服务器的方法参考代码
- Html5添加canvas图像导出为多种格式图片的jQuery插件教程
- canvas获取base64图片并上传php服务器
- HTML5图片canvas等比例缩放后上传