将html canvas里的图片保存到本地_html/css_WEB-ITnose
当你想要这样做的时候,你可以:
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); }}

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Artikel ini membincangkan html & lt; kemajuan & gt; elemen, tujuan, gaya, dan perbezaan dari & lt; meter & gt; elemen. Tumpuan utama adalah menggunakan & lt; kemajuan & gt; untuk menyelesaikan tugas dan & lt; meter & gt; untuk stati

Artikel ini membincangkan html & lt; datalist & gt; elemen, yang meningkatkan bentuk dengan menyediakan cadangan autokomplete, meningkatkan pengalaman pengguna dan mengurangkan kesilapan. Kira -kira: 159

Artikel membincangkan amalan terbaik untuk memastikan keserasian silang pelayar HTML5, memberi tumpuan kepada pengesanan ciri, peningkatan progresif, dan kaedah ujian.

Artikel ini membincangkan html & lt; meter & gt; elemen, digunakan untuk memaparkan nilai skalar atau pecahan dalam julat, dan aplikasi umum dalam pembangunan web. Ia membezakan & lt; meter & gt; dari & lt; kemajuan & gt; dan Ex

Artikel ini membincangkan menggunakan atribut pengesahan bentuk HTML5 seperti had, corak, min, max, dan panjang untuk mengesahkan input pengguna secara langsung dalam penyemak imbas.

Artikel ini menerangkan html5 & lt; time & gt; elemen untuk perwakilan tarikh/masa semantik. Ia menekankan pentingnya atribut DateTime untuk pembacaan mesin (format ISO 8601) bersama teks yang boleh dibaca manusia, meningkatkan aksesibilit

Artikel ini membincangkan tag Meta Viewport, penting untuk reka bentuk web responsif pada peranti mudah alih. Ia menerangkan bagaimana penggunaan yang betul memastikan skala kandungan yang optimum dan interaksi pengguna, sementara penyalahgunaan boleh membawa kepada isu reka bentuk dan kebolehaksesan.

Artikel ini membincangkan & lt; iframe & gt; Tujuan TAG dalam membenamkan kandungan luaran ke dalam halaman web, kegunaan umum, risiko keselamatan, dan alternatif seperti tag objek dan API.
