返回顶部
首页 > 资讯 > 服务器 >如何导出HTML5中Canvas图片并上传服务器功能
  • 690
分享到

如何导出HTML5中Canvas图片并上传服务器功能

2023-06-09 12:06:07 690人浏览 八月长安
摘要

小编给大家分享一下如何导出HTML5中canvas图片并上传服务器功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!导出html5 Canvas图片,并上传服务器最近接触的项目中,经常遇到需要canvas绘制图片的需求,比

小编给大家分享一下如何导出HTML5canvas图片并上传服务器功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

导出html5 Canvas图片,并上传服务器

最近接触的项目中,经常遇到需要canvas绘制图片的需求,比如拼图,比如图片编辑等。canvas处理后的图片必然涉及到保存,

因此,下面方法也许是你需要的~

思路:

使用 toDataURL()方法导出canvas图片,此时得到base64的数据

将base64数据封装blob对象

组装FORMData

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});};

知识点扩展:

HTML5 Canvas转化成图片后上传服务器

function b64ToUint8Array(b64Image) {   var img = atob(b64Image.split(',')[1]);   var img_buffer = [];   var i = 0;   while (i < img.length) {      img_buffer.push(img.charCodeAt(i));      i++;   }   return new Uint8Array(img_buffer);}var b64Image = canvas.toDataURL('image/jpeg');var u8Image  = b64ToUint8Array(b64Image);var formData = new FormData();formData.append("image", new Blob([ u8Image ], {type: "image/jpg"}));var xhr = new XMLHttpRequest();xhr.open("POST", "/api/upload", true);xhr.send(formData);

用上面这种方式在前端通过js处理,server端不需要进行任何额外处理。

我认为是最方便最直接的办法,反而很多高赞回复,需要server进行各种处理,不推荐。

Had to convert canvas Base64-encoded image to  Uint8Array Blob .

看完了这篇文章,相信你对“如何导出HTML5中Canvas图片并上传服务器功能”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网服务器频道,感谢各位的阅读!

--结束END--

本文标题: 如何导出HTML5中Canvas图片并上传服务器功能

本文链接: https://lsjlt.com/news/255989.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何导出HTML5中Canvas图片并上传服务器功能
    小编给大家分享一下如何导出HTML5中Canvas图片并上传服务器功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!导出HTML5 Canvas图片,并上传服务器最近接触的项目中,经常遇到需要canvas绘制图片的需求,比...
    99+
    2023-06-09
  • Html5 FileReader如何实现即时上传图片功能
    今天小编给大家分享一下Html5 FileReader如何实现即时上传图片功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有...
    99+
    2024-04-02
  • html5中canvas移动浏览器上如何实现图片压缩上传
    这篇文章主要介绍html5中canvas移动浏览器上如何实现图片压缩上传,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、<input type="file"...
    99+
    2024-04-02
  • 如何使用HTML5实现多张图片上传功能
    小编给大家分享一下如何使用HTML5实现多张图片上传功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! HTML结构: &l...
    99+
    2024-04-02
  • Html5怎么实现上传本地图片并预览功能
    小编给大家分享一下Html5怎么实现上传本地图片并预览功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近工作中需要H5上传显...
    99+
    2024-04-02
  • html5中怎么实现图片上传预览功能
    今天就跟大家聊聊有关html5中怎么实现图片上传预览功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。<!DOCTYPE html&...
    99+
    2024-04-02
  • 如何通过Canvas及File API缩放并上传图片
    这篇文章主要讲解了“如何通过Canvas及File API缩放并上传图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何通过Canvas及File API...
    99+
    2024-04-02
  • HTML5+CSS3如何实现无插件拖拽上传图片功能
    这篇文章主要为大家展示了“HTML5+CSS3如何实现无插件拖拽上传图片功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5+CSS3如何实现无插件拖拽...
    99+
    2024-04-02
  • 如何使用HTML5移动开发图片压缩上传功能
    这篇文章主要为大家展示了“如何使用HTML5移动开发图片压缩上传功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用HTML5移动开发图片压缩上传功能”这...
    99+
    2024-04-02
  • WebUploader如何实现图片上传功能
    本篇内容介绍了“WebUploader如何实现图片上传功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!描述:springmvc 在jsp页...
    99+
    2023-06-14
  • VUE如何实现上传图片功能
    这篇“VUE如何实现上传图片功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“VUE如何实现上传图片功能”文章吧。首先要创建...
    99+
    2023-07-04
  • Golang如何实现图片上传功能
    今天小编给大家分享一下Golang如何实现图片上传功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.前端代码html代码...
    99+
    2023-06-30
  • React+ajax+java如何实现上传图片并预览功能
    小编给大家分享一下React+ajax+java如何实现上传图片并预览功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!之前有在网上找ajax上传图片的资料,大部...
    99+
    2023-06-08
  • HTML5如何使用Canvas实现放入图片和保存为图片功能
    这篇文章给大家分享的是有关HTML5如何使用Canvas实现放入图片和保存为图片功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用JavaScript将图片拷贝进画布要想将图...
    99+
    2024-04-02
  • HTML5中怎么实现一个图片压缩上传功能
    这篇文章给大家介绍HTML5中怎么实现一个图片压缩上传功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、创建一个图片和一个canvasXML/HTML Code复制内容到剪贴板va...
    99+
    2024-04-02
  • angular2+nodejs如何实现图片上传功能
    这篇文章主要介绍angular2+nodejs如何实现图片上传功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在使用angular2进行图片上传的时候,遇到了各种各样的问题。在多番...
    99+
    2024-04-02
  • vue+ bootstrap如何实现图片上传图片展示功能
    这篇文章给大家分享的是有关vue+ bootstrap如何实现图片上传图片展示功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果图如下所示:html..... ..........
    99+
    2024-04-02
  • Html5 中怎么利用FileReader实现即时上传图片功能
    Html5 中怎么利用FileReader实现即时上传图片功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。<!DOCT...
    99+
    2024-04-02
  • HTML5如何实现微信拍摄上传照片功能
    这篇文章主要介绍HTML5如何实现微信拍摄上传照片功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前端代码$(':file').on('change'...
    99+
    2024-04-02
  • VUE如何实现选择上传图片并页面显示功能
    这篇文章给大家分享的是有关VUE如何实现选择上传图片并页面显示功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。基于VUE选择上传图片并在页面显示,图片可删除,具体内容如下dem...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作