AdobeAIR网络摄像头问题

AdobeAIR网络摄像头问题,air,adobe,Air,Adobe,我一直在开发一个简单的桌面应用程序,使用AdobeAIR、html和javascript将数据保存到sqlite(不是as,没有flash builder,没有flex)。有没有一种方法可以从我的网络摄像头中捕获图像并使用这些技术保存?如果没有,还可以做些什么来实现这一结果?提前感谢。这是可以做到的,但绝对不利于性能:)您将得到巨大的字符串对象(更大的图像=更大的字符串)。但我会告诉你我是怎么做到的 首先,您必须从网络摄像头获取位图数据。这可以通过创建BitmapData对象并使用其draw()

我一直在开发一个简单的桌面应用程序,使用AdobeAIR、html和javascript将数据保存到sqlite(不是as,没有flash builder,没有flex)。有没有一种方法可以从我的网络摄像头中捕获图像并使用这些技术保存?如果没有,还可以做些什么来实现这一结果?提前感谢。

这是可以做到的,但绝对不利于性能:)您将得到巨大的字符串对象(更大的图像=更大的字符串)。但我会告诉你我是怎么做到的

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

var bmpd:BitmapData = new BitmapData(webcam.width, webcam.height);
bmpd.draw(webcam);
var baseString:String = Base64.encodeByteArray(ba);
使用此位图数据,然后可以调用getPixels(),它将返回ByteArray

var ba:ByteArray = bmpd.getPixels();
此ByteArray现在已准备好进行序列化。因为您正在存储,所以最好将其存储为字符串。这通常由Base64完成。您可以使用来实现base64编码,如下所示:

var bmpd:BitmapData = new BitmapData(webcam.width, webcam.height);
bmpd.draw(webcam);
var baseString:String = Base64.encodeByteArray(ba);
上面的字符串可以存储在sqlite中,是图像的字符串表示形式。图像越大,转换所需时间越长

要从sqlite获取图像,可以使用我提供给您的Base64类的decodeByteArray()方法,并结合loader对象。示例如下所示

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

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

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

TY Michiel。。如果我只需要在使用时间戳重命名后将图像作为jpg存储在文件夹中并存储imagename,该怎么办?我可以把bitmapdata转换成jpg格式吗?看看这个链接,它有将bitmapdata转换成jpg的源代码(imagename由您自己选择)。