adobe air webcam问题

时间:2011-09-23 05:17:22

标签: air adobe

我一直在开发一个简单的桌面应用程序,使用adobe air,html和javascript将数据保存到sqlite(不是,没有flash builder,没有flex)。有没有办法可以从我的网络摄像头捕获图像并使用这些技术保存?如果没有,还能做些什么才能达到效果?提前谢谢。

1 个答案:

答案 0 :(得分: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()方法,结合loader-object。示例如下所示。

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

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

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

相关问题