原文:http://www.2cto.com/kf/201209/156169.html

前端的代码:

[javascript] 
function drawArrow(angle) 

    //Init canvas 
    var canvas = $('#cv_Arrow')[0]; 
    var context = canvas.getContext('2d'); 
    var width = canvas.width; 
    var height = canvas.height; 
    context.clearRect(0, 0, width, height); 
 
    //Rotate 
    var distance = iconSize / 2 * Math.sqrt(2) * Math.sin(angle * Math.PI / 180 / 2) * 2; 
    var degree = 180 - 45 - (180 - angle) / 2; 
    var x = distance * Math.sin(degree * Math.PI / 180); 
    var y = distance * Math.cos(degree * Math.PI / 180); 
    context.translate(x, -y); 
    var angleInRadians = angle * Math.PI / 180; 
    context.rotate(angleInRadians); 
 
    //Draw arrow 
    context.fillStyle = 'rgb(0,0,0)'; //Black 
    context.lineWidth = 1; 
    context.strokeStyle = "#000000"; //Black 
    context.lineCap = 'round'; //Circle angle 
    context.lineJoin = 'round'; 
    context.beginPath(); 
    context.moveTo(iconSize / 2, border); 
    context.lineTo(border, iconSize - border); 
    context.lineTo(iconSize / 2, iconSize / 2); 
    context.fill(); 
    context.stroke(); 
    context.closePath(); 
    context.save(); 
 
    context.restore(); 
    context.fillStyle = 'rgb(255,255,255)'; //White 
    context.lineWidth = 1; 
    context.strokeStyle = "#000000"; 
    context.lineCap = 'round'; 
    context.lineJoin = 'round'; 
    context.beginPath(); 
    context.moveTo(iconSize / 2, border); 
    context.lineTo(iconSize - border, iconSize - border); 
    context.lineTo(iconSize / 2, iconSize / 2); 
    context.fill(); 
    context.stroke(); 
    context.closePath(); 
    context.save(); 
 
    _canvas = canvas; 

发送到后台的代码:

[javascript]
for (var i = 0; i < 360; i++) 

    drawArrow(1); 
 
    var data = _canvas.toDataURL(); 
 
    //删除字符串前的提示信息 "data:image/png;base64," 
    var b64 = data.substring(22); 
 
    $.ajax({ url: "RotateCanvas.aspx", data: { data: b64, name: i.toString() }, success: 
            function () 
            { 
            //alert('OK'); 
            } 
    }); 

后台接收的代码:

[csharp]
if (Request["name"] != null) 

    string name = Request["name"]; 
    String savePath = Server.MapPath("~/images/output/"); 
 
    try 
    { 
        FileStream fs = File.Create(savePath + "/" + name + ".png"); 
        byte[] bytes = Convert.FromBase64String(Request["data"]); 
 
        fs.Write(bytes, 0, bytes.Length); 
        fs.Close(); 
    } 
    catch (Exception ex) 
    { 
    } 

最后生成的结果:

生成图片的效果很棒,不失真,而且透明的,不需要后期处理。

用html5的canvas生成图片并保存到本地的更多相关文章

  1. canvas生成图片并保存到本地文件夹主要代码

    js var url = canvas.toDataURL();//把canvas中的图片变成data:image C# string filepath = ""; string ...

  2. 利用canvas将网页元素生成图片并保存在本地

    利用canvas将网页元素生成图片并保存在本地 首先引入三个文件: 1.<script type="text/javascript" src="js/html2ca ...

  3. vue使用html2canvas生成图片并保存到本地

    html2canvas官方文档 http://html2canvas.hertzen.com/ npm下载依赖 npm install html2canvas -S 在需要使用的地方引入 import ...

  4. html生成图片并保存到本地方法(Windows)

    // 最近用到一个保存html为图片到本地的功能(保存到下载目录),记之,该功能IE使用Blob 存储数据,关于兼容性问题参见如下表格,其他浏览器使用a标签download属性新功能下载 Browse ...

  5. 【转载】用原生JS和html5进行视频截图并保存到本地

    支持并尊重原创!原文地址:http://www.cnblogs.com/xieshuxin/p/6731637.html <!doctype html> <html> < ...

  6. 用原生JS和html5进行视频截图并保存到本地

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  7. 将HTML5 Canvas的内容保存为图片借助toDataURL实现

    将HTML5 Canvas的内容保存为图片主要思想是借助Canvas自己的API - toDataURL()来实现,具体实现如下,感兴趣的朋友可以参考下哈,希望对你有所帮助 <html> ...

  8. HTML5 canvas生成图片马赛克特效插件

    HTML5 canvas生成图片马赛克特效插件 简要教程 这是一款使用html5 canvas来将图片制作成马赛克效果的js插件.该插件的灵感来自于美国肖像画家Chuck Close.已经有人使用这个 ...

  9. 微信小程序导出当前画布指定区域的内容并生成图片保存到本地相册(canvas)

    最近在学小程序,在把当前画布指定区域的内容导出并生成图片保存到本地这个知识点上踩坑了. 这里用到的方法是: wx.canvasToTempFilePath(),该方法作用是把当前画布指定区域的内容导出 ...

随机推荐

  1. *ecshop安装模板

    1. 安装模板 例: 新建abc.com文件 复制default下的style.css 修改两个http://www.ecshop.com/ 为 http://www.hua.com/ 复制defau ...

  2. php的session.serialize_handler

    php里面的session.serialize_handler用来设置php的session的序列化方式,默认值为php,及使用php的序列化与反序列化. 还有一个值为session.serializ ...

  3. android动画学习

    android动画学习   转载自:http://www.open-open.com/lib/view/open1329994048671.html 3.0以前,android支持两种动画模式,twe ...

  4. a标签包input引起的问题

    最近公司中的一个项目中,有一个同事跟我说,他写的输入框不能选中输入内容了,并且光标也不能插入到已写好的文字其他位置. 简化了一下他的代码结构,如下: <a href="javascri ...

  5. Oracle 中的 TO_DATE 和 TO_CHAR 函数

    Oracle 中的 TO_DATE 和 TO_CHAR 函数oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年) ...

  6. Java 中带参无返回值方法的使用

    有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行.例如,现实生活中电饭锅可以实现“煮饭”的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真 ...

  7. LINUX下的tty,console与串口分析

    1.LINUX下TTY.CONSOLE.串口之间是怎样的层次关系?具体的函数接口是怎样的?串口是如何被调用的? 2.printk函数是把信息发送到控制台上吧?如何让PRINTK把信息通过串口送出?或者 ...

  8. 《A Tour of PostgreSQL Internals》学习笔记——进程间通信

    中秋节假期这么快就没了,这几天还一直下雨,索性在家看看书.这次看的是Tom Lane的<A Tour of PostgreSQL Internals>.这篇小随笔就算做学习笔记了.园子里面 ...

  9. 用Delphi实现文件关联

      文件关联为我们带来很多的方便.Delphi自带有注册表对象TRegistry,可以通过它取得或改变注册表相关键值的内容. Function GetAssociatedExec(FileExt: S ...

  10. 第二个UI脚本--Python+selenium之unittest+HTMLtestRunner及python的继承

    前面有一篇对于常见元素的识别和操作的python自动化脚本,这一篇就接着聊下python的类继承,已经它的第三款unittest框架,和报告收集包HTMLtestRunner的应用. 还是直接上代码吧 ...