【问题标题】:adobe air webcam problemadobe air 网络摄像头问题
【发布时间】:2011-09-23 05:17:22
【问题描述】:

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

【问题讨论】:

    标签: air adobe


    【解决方案1】:

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

    首先,您必须从网络摄像头获取 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);
    

    这就是您可以从数据库中存储和检索图像的方式。

    【讨论】:

    • TY Michiel.. 如果我只需要在使用时间戳重命名后将图像作为 jpg 存储在文件夹中并存储图像名称,该怎么办?我可以将位图数据转换为 jpg 格式吗?
    • 看看这个链接,它有源代码将位图数据转换为jpg(图像名称是你自己选择的)。 weblog.cahlan.com/2006/10/save-out-bitmapdata-to-jpg.html
    猜你喜欢
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2011-10-16
    相关资源
    最近更新 更多