原文: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. HDU1495 非常可乐

    解题思路:简单的宽搜,见代码: #include<cstdio> #include<cstring> #include<algorithm> #include< ...

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

  3. yii2.0 输出url 注册js css文件

    //输出url <a href="<?=  Url::to(['/users/login/login','id'=>5,'mark'=>true]) ?>&qu ...

  4. mysql的password()函数和md5函数

    password用于修改mysql的用户密码,如果是应用与web程序建议使用md5()函数, password函数旧版16位,新版41位,可用select length(password('12345 ...

  5. 设置TextView控件的背景透明度和字体透明度

    TextView tv = (TextView) findViewById(R.id.xx); 第1种:tv.setBackgroundColor(Color.argb(255, 0, 255, 0) ...

  6. delphi 中字符串与16进制、10进制转换函数

      //字符串转成16进制代码function strToHexStr(str:string):string;varc:char;ss:string;i:integer;beginwhile str& ...

  7. angularJS+requireJS并集成karma测试实践

    最近在为下一个项目做前端技术选型,Angular是必须要用的(BOSS指定,个人感觉也不错,开发效率会很高).由于需要加载的JS很多,所以打算看看angular和requirejs一起用会怎么样.在g ...

  8. cocos2d-x 全面总结--字体描边和制作阴影

    关于字体描边的实现,不考虑效果和效率的话,是有三种方式: ① 利用CCLabelTTF制作文字描边和阴影效果 ② 利用CCRenderTexture渲染文理的方式生成带有描边效果的文字 ③ 利用sha ...

  9. 运算符重载 C++ 编程思想

    class Integer{ int i; public: Integer(int ii) : i(ii) {} const Integer operator+(const Integer& ...

  10. 前端面试题(JS篇)

    原题地址:http://handyxuefeng.blog.163.com/blog/static/454521722013111714040259/ 好吧,最近打算换工作,所以关注比较多的是面试题, ...