用html5的canvas生成图片并保存到本地
-
原文: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生成图片并保存到本地的更多相关文章
- canvas生成图片并保存到本地文件夹主要代码
js var url = canvas.toDataURL();//把canvas中的图片变成data:image C# string filepath = ""; string ...
- 利用canvas将网页元素生成图片并保存在本地
利用canvas将网页元素生成图片并保存在本地 首先引入三个文件: 1.<script type="text/javascript" src="js/html2ca ...
- vue使用html2canvas生成图片并保存到本地
html2canvas官方文档 http://html2canvas.hertzen.com/ npm下载依赖 npm install html2canvas -S 在需要使用的地方引入 import ...
- html生成图片并保存到本地方法(Windows)
// 最近用到一个保存html为图片到本地的功能(保存到下载目录),记之,该功能IE使用Blob 存储数据,关于兼容性问题参见如下表格,其他浏览器使用a标签download属性新功能下载 Browse ...
- 【转载】用原生JS和html5进行视频截图并保存到本地
支持并尊重原创!原文地址:http://www.cnblogs.com/xieshuxin/p/6731637.html <!doctype html> <html> < ...
- 用原生JS和html5进行视频截图并保存到本地
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 将HTML5 Canvas的内容保存为图片借助toDataURL实现
将HTML5 Canvas的内容保存为图片主要思想是借助Canvas自己的API - toDataURL()来实现,具体实现如下,感兴趣的朋友可以参考下哈,希望对你有所帮助 <html> ...
- HTML5 canvas生成图片马赛克特效插件
HTML5 canvas生成图片马赛克特效插件 简要教程 这是一款使用html5 canvas来将图片制作成马赛克效果的js插件.该插件的灵感来自于美国肖像画家Chuck Close.已经有人使用这个 ...
- 微信小程序导出当前画布指定区域的内容并生成图片保存到本地相册(canvas)
最近在学小程序,在把当前画布指定区域的内容导出并生成图片保存到本地这个知识点上踩坑了. 这里用到的方法是: wx.canvasToTempFilePath(),该方法作用是把当前画布指定区域的内容导出 ...
随机推荐
- 【转】WCF和ASP.NET Web API在应用上的选择
文章出处:http://www.cnblogs.com/shanyou/archive/2012/09/26/2704814.html 在最近发布的Visual Studio 2012及.NET 4. ...
- centos5.4_x64 red5 1.0安装部署
一.centos5.4_x64 默认安装后会集成jdk1.6 java -version 如果显示当前安装的版本号为1.6,则不需要再安装. 二.安装Red5 1.创建临时目录: cd /usr/lo ...
- Oracle自定义数据类型 1
原文 oracle 自定义类型 type / create type 一 Oracle中的类型 类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nva ...
- MAC OSX 驱动操作
mac ox系统的驱动安装常规操作:下载到 *.kext 的驱动以后,都可以直接把它拖到 /System/Library/Extensions/ 下替换掉原来的文件.替换了以后,还需要修复权限才能够正 ...
- ASCII和16进制
所谓的ASCII和16进制都只是概念上的东西,在计算机中通通是二进制 转换应该是输出的转换,同样是一个数,在计算机内存中表示是一样的,只是输出不一样ASCII是针对字符的编码,几乎是键盘上的字符的编码 ...
- Vs2015 win10虚拟机启动问题:无法设置UDP端口 解决方法 合集(转载)
刚装的vs2015 社区版 出现这个问题,wp8.1和win10m模拟器都无法启动,找了好久找到的解决方案,放这儿供大家参考,免得大家像我一样走弯路: Windows Phone emulator n ...
- bzoj1833 digit
这道题其实挺水,只是写的时候需要想清楚.我的方法是: 1.将[a,b]转化为[0,b+1)-[0,a) 2.预处理出非0的v在区间[0,10^p)出现次数以及0在区间[0,10^p)出现数 3.将一个 ...
- 我来说说MVC过滤器
APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. 在Asp.netMvc中当你有以下及类似 ...
- python中使用多继承
python中使用多继承,会涉及到查找顺序(MRO).重复调用(钻石继承,也叫菱形继承问题)等 MRO MRO即method resolution order,用于判断子类调用的属性来自于哪个父类.在 ...
- 详解WPF Blend工具中的复合路径功能 ( 含路径标记语法 )
写此文章的目的是为了简单分析一下 Blend工具中提供的"复合路径"功能.有人在我的博文中留言问我复合路径的问题. 稍微琢磨一下,觉得应该是对的.因此贴出来和大家分享.有不对的说 ...