当你想要这样做的时候,你可以:
ms给出了官方方案,参考以下:
在本地保存 canvas 图像
demo地址
IE10上的效果还是不错的,其他IE版本并未测试。
令人遗憾的是,chrome等其他浏览器并不支持。
另外一种解决办法,就是取出canvas里的内容,post back回服务器,然后使用文件下载的方式保存图片到本地。
这样操作又回去了一趟服务器并且数据流量还不见得太小(当然对目前的网络速度和服务器配置来说还是小意思,除非真的很多很大),虽然的确不太好但是个人尚没有更好的解决方案。
如果不是需要编辑canvas内容(比如二维码之类的),而只是动态生成图片或者图片的样子来展示的,还可以直接使用服务器端的GD之类的编程生成内存图片展示到客户端(或者生成临时服务器文件,不需要的时候再删除)。
对比上面的做法,这种方式将图片的加工留在了服务器上,会对服务器的cpu使用显得更加高负。而在客户端生成的话,小小的发挥了分布式不是^_^
示例(asp.net mvc - razor):
<form method="post" action="../Download" target="_blank" style="display:none" id="form_download"></form>@section scripts{ <script type="text/javascript" src="~/Scripts/jquery.qrcode.min.js"></script> <script type="text/javascript" src="~/Scripts/qrcode.min.js"></script> <script type="text/javascript"> var url = "@Html.Raw(Url.Action("CheckTicket", "MeetingCenter", new { area = "wxfuns", id = Model.Id }).EncodeUrlWithOauth(Model.WxAcct.AppId))"; $("#qrcode").qrcode({ //render: "canvas", //table|canvas方式 width: 400, //宽度 height: 400, //高度 text: url //任意内容 }); //$("#qrcode").qrcode("@ViewBag.url"); function saveAsLocalImage() { // 如果使用getElementById或者$("#qrcode")的方式,会报错说不支持toDataURL方法 var myCanvas = document.getElementsByTagName('canvas')[0]; var image = myCanvas.toDataURL("image/png"); // 这个form动态生成也行 var f = $('#form_download'); // 命名带上“1”是为了提醒以后可以做成多个的键值对 var name1 = $('<input name="name1" type="text" value="@Html.Raw(Model.Title)" />'); var val1 = $('<input name="val1" type="text" value="' + image + '" />'); name1.appendTo(f); val1.appendTo(f); f.submit(); // 因为这个f不是动态生成的,需要清空这个form,否则第二次提交就有问题了。 f.html(""); } </script>}
public ActionResult Download(FormCollection collection){ try { // 一样的,命名带上“1”是为了提醒以后可以做成多个的键值对 string name1 = collection["name1"]; string val1 = collection["val1"]; if (string.IsNullOrEmpty(name1) || string.IsNullOrEmpty(val1) || (val1.StartsWith("data:image/png;base64") == false)) { return new EmptyResult(); } var base64 = val1.Substring(22); byte[] bytes = Convert.FromBase64String(base64); MemoryStream memStream = new MemoryStream(bytes); return File(memStream, "application/octet-stream", Server.UrlEncode(name1 + ".png")); } catch (Exception ex) { return Content(ex.Message); }}

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML的作用是通过标签和属性定义网页的结构和内容。1.HTML通过到、等标签组织内容,使其易于阅读和理解。2.使用语义化标签如、等增强可访问性和SEO。3.优化HTML代码可以提高网页加载速度和用户体验。

htmlisaspecifictypefodyfocusedonstructuringwebcontent,而“代码” badlyLyCludEslanguagesLikeLikejavascriptandPytyPythonForFunctionality.1)htmldefineswebpagertuctureduseTags.2)“代码”代码“ code” code code code codeSpassSesseseseseseseseAwiderRangeLangeLangeforLageforLogageforLogicIctInterract

HTML、CSS和JavaScript是Web开发的三大支柱。1.HTML定义网页结构,使用标签如、等。2.CSS控制网页样式,使用选择器和属性如color、font-size等。3.JavaScript实现动态效果和交互,通过事件监听和DOM操作。

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

HTML适合初学者学习,因为它简单易学且能快速看到成果。1)HTML的学习曲线平缓,易于上手。2)只需掌握基本标签即可开始创建网页。3)灵活性高,可与CSS和JavaScript结合使用。4)丰富的学习资源和现代工具支持学习过程。

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

如何设计菜单中的虚线分割效果?在设计菜单时,菜名和价格的左右对齐通常不难实现,但中间的虚线或点如何...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

WebStorm Mac版
好用的JavaScript开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Linux新版
SublimeText3 Linux最新版

记事本++7.3.1
好用且免费的代码编辑器