2011-09-23 84 views
0

我一直在开发一个简单的桌面应用程序,使用adobe air,html和javascript将数据保存到sqlite(而不是flash builder,没有flex)。有没有一种方法可以从我的摄像头捕捉图像并使用这些技术进行保存?如果不能做什么来实现结果?提前致谢。土坯空气摄像头问题

回答

0

这可以做到,但它绝对不是性能友好的:)你会得到巨大的字符串对象(更大的图像=更大的字符串)。但我会告诉你我是如何做到的。

首先,您必须从网络摄像头获取BitmapData。这可以通过创建一个BitmapData对象,并使用其draw()来完成 - 功能,如下图所示:

var bmpd:BitmapData = new BitmapData(webcam.width, webcam.height); 
bmpd.draw(webcam); 

有了这个的BitmapData,您可以致电的getPixels(),它会返回的ByteArray。

var ba:ByteArray = bmpd.getPixels(); 

此ByteArray现在已准备好进行序列化。由于您正在存储,最好将其存储为字符串。这通常由Base64完成。您可以使用this class来实现的base64编码,如下图所示:

var baseString:String = Base64.encodeByteArray(ba); 

上面的字符串可以存储在你的sqlite的,是你的形象的一个字符串表示。图片越大,转换所需的时间就越长。

要从sqlite中获取图像,可以使用我给你的Base64类的decodeByteArray()方法,并结合一个加载器对象。示例如下所示。

var baseString = StringFromYourSQLite; 
var ba:ByteArray = Base64.decodeToByteArray(baseString); 

var imageLoader:Loader = new Loader(); 
imageLoader.loadBytes(ba); 
stage.addChild(imageLoader); 

这就是你如何存储和检索数据库中的图像。

+0

TY Michiel ..如果我只是需要在使用时间戳重命名并存储imagename之后将图像作为jpg存储在文件夹中,该怎么办?我可以将bitmapdata转换为jpg格式吗? –

+0

看看这个链接,它有源代码将bitmapdata转换为jpg(并且图像名称由您自己选择)。 http://weblog.cahlan.com/2006/10/save-out-bitmapdata-to-jpg.html –