原文: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. HDU5427

    #include<cstdio> #include<iostream> #include<cstring> #include<algorithm> us ...

  2. 【英语】Bingo口语笔记(10) - 常见词汇的缩读

  3. nodejs简单层级结构配置文件

    在NodeJS中使用配置文件,有几种比较不错的方案:第一种:文件格式使用json是毋容置疑的好方案.格式标准,易于理解,文件内容读取到内存之后,使用JSON的标准分析函数即可得到配置项.第二种:将配置 ...

  4. 解析AFNetWorking 网络框架(二)

    转:http://blog.csdn.net/andy_jiangbin/article/details/17114989 接着前面写. 本帖先讲AFURLConnectionOperation,它是 ...

  5. 康乐不风流之爱解题的pde灌水王张祖锦

    康乐不风流之爱解题的pde灌水王张祖锦 师弟: 邓洪存 (现在烟台大学任教) 好吧, 我一直想写写康乐园里与我相熟的这几个人, 不如趁此机会开始. 第一批人物为张祖锦.苏延辉.张会春.黄显涛.刘兴兴. ...

  6. Gridview点击Edit编辑未update和cancel后的问题

    在使用GridView时无意中发现一个问题: 第一步:点击列表中的某一行的"Edit"(例如第一行数据), 第二步:点击下一页,于是在下一页数据加载完成后就会看到对应的行(与第一步 ...

  7. OSX学习01之更新头像

    前不久在官网上守株待兔,买了一个官翻版865,其实最想买294的,可是米不足啊——所以,在同时下了865和293的订单,并纠结了一天后,确定了865,剩余的钱够一个Mac mini了,如果不买也可以日 ...

  8. Python在centos下的安装

    1.wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz默认下载到主目录下 2.tar xzf Python-2.6.6.tgz 3 ...

  9. java Comparable 比较器的使用

    /** * */ package com.mindreader; import java.util.Arrays; /** * @作者 Mind reader * @内容 对象数组排序——Compar ...

  10. PHPSTORM 与 Xdebug 配合调试

    基本的配置可以参考网上的文档, 浏览器中装插件(xdebug)或直接在请求中加上如下的参数也可启动调试 ?XDEBUG_SESSION_START=PHPSTORM