使用Titanium将Canvas图像保存为文件

介绍在Titanium中,将WebView中通过canvas绘制的图像保存为文件的方法。

用户通过canvas所绘制的图像,在很多时候需要保存为文件。如何将WebView的canvas数据传递给Titanium有2个方法。

1.在html文件中(包含canvas标签的html文件)通过JavaScript(Titanium.App.fireEvent)通信将canvas的数据作为该事件的参数传递过去。

2.在Titanium的JS中只用WebView的evalJS方法,调用html文件中能够返回绘制的canvas图像数据的JavaScript。

第一种方法以前提到过了。这里我们说说第2中方法。

首先我们需要使用能够返回canvas的图像数据的toDataURL()方法。但是有一个问题是toDataURL()方法返回的是通过base64加密的字符串,在这段字符串的开头是mimetype

如:

[color=red][size=large]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABcIAAAQqCAYAAABk7....[/size][/color]

通过replace方法将toDateURL()返回的字符串进行处理。消除mimetype之后,大概是这个样样子的:

iVBORw0KGgoAAAANSUhEUgAABcIAAAQqCAYAAABk7....

处理内容整理后大概是以下这样的一个函数:

function output(){
var cvs = document.getElementById( "stage" );
var src = cvs.toDataURL("image/png").replace(/^.*,/,'');
return src;
}


通过这个函数返回的值,我们变换后就能保存为文件了。


var result = webview.evalJS("output();");
var base64 = Titanium.Utils.base64decode(result);
var file = Titanium.Filesystem.getFile( Titanium.Filesystem.tempDirectory, "_TEMP_.png" );
file.write( base64 );



******
包含有canvas的HTML文件详见附件!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值