-1

as3を使用してiPadのカメラにアクセスする方法はありますか?

  • つまり、アプリ自体の中でカメラを起動します
  • 撮影して画像をbyteArrayに保存し、画像を背景に適用したり、操作を行ったりする機能があります

私はそれらのほとんどがAndroidデバイスにアクセスする方法を示すだけでいくつかの調査を行いました。提案や助けをありがとう。

4

4 に答える 4

7

Yes, you can absolutely do this. The beauty of Flash is that the code to do it is the same that you would use on Android or a PC.

Literally, you can do this to connect the camera to a Video object:

var camera:Camera = Camera.getCamera();
var video=new Video();
video.attachCamera(camera);
this.addChild(video); // 'this' would be a Sprite or UIComponent, etc...

There's a lot more to do if you want to do something useful, but it's fairly straight forward once you get started :)

于 2012-04-13T02:51:07.883 に答える
1

iOS で画像バイトにアクセスする方法は、ローダーを使用することだけではありません。データは最初から既に JPEG 形式であることが判明したため、再度エンコードする必要はありません。

aを実行mediaPromise.open()してバイトを取得し、代わりに直接保存してください。

于 2013-06-13T20:47:54.150 に答える
1

bluebill1049、あなたが探していたものを手に入れたかどうかはスレッドからはわかりませんが、クラス全体に対するあなたの要求を見ました. この投稿で、同じ情報 (Jason Sturges が彼の回答に投稿したもの) を見つけました。

Adobe Builder (flex) for iOS を使用して写真を撮る

ここでの彼の返信とは異なり、その投稿への彼の返信には、モバイルアプリの構築に関する優れたチュートリアルへのリンクがあり、このコードが持ち上げ/引用されたのはそのチュートリアルからでした. そのプロジェクト/チュートリアルに含まれるイベント クラス (event.CameraEvent - 数行のみ) が必要なので、いわばソースに戻ることができることが重要です。そのソースは次の場所にあります。

http://devgirl.org/files/RIAUnleashed/

ジェイソンに感謝します。掘り下げる必要がないように、引用から欠落しているイベントクラスを次に示します。

package events
{
    import flash.events.Event;
    import flash.filesystem.File;

    public class CameraEvent extends Event
    {
        public static const FILE_READY:String = "fileReady";

        public var file:File;

        public function CameraEvent(type:String, file:File=null, bubbles:Boolean = true, cancelable:Boolean = true)
        {
            super(type, bubbles, cancelable);
            this.file = file;
        }
    }
}

それが役立つことを願っています!

于 2012-12-03T08:01:07.153 に答える
0

XpenseIt のサンプル コードは、このカメラの実装を提供します。

クラス: CameraUtil:

package utils
{
    import events.CameraEvent;

    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.LoaderInfo;
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.MediaEvent;
    import flash.filesystem.File;
    import flash.filesystem.FileMode;
    import flash.filesystem.FileStream;
    import flash.media.CameraRoll;
    import flash.media.CameraUI;
    import flash.media.MediaPromise;
    import flash.media.MediaType;
    import flash.utils.ByteArray;

    import mx.events.DynamicEvent;
    import mx.graphics.codec.JPEGEncoder;

    [Event(name = "fileReady", type = "events.CameraEvent")]
    public class CameraUtil extends EventDispatcher
    {
        protected var camera:CameraUI;
        protected var loader:Loader;
        public var file:File;

        public function CameraUtil()
        {
            if (CameraUI.isSupported)
            {
                camera = new CameraUI();
                camera.addEventListener(MediaEvent.COMPLETE, mediaEventComplete);
            }
        }

        public function takePicture():void
        {
            if (camera)
                camera.launch(MediaType.IMAGE);
        }

        protected function mediaEventComplete(event:MediaEvent):void
        {
            var mediaPromise:MediaPromise = event.data;
            if (mediaPromise.file == null)
            {
                // For iOS we need to load with a Loader first
                loader = new Loader();
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleted);
                loader.loadFilePromise(mediaPromise);
                return;
            }
            else
            {
                // Android we can just dispatch the event that it's complete
                file = new File(mediaPromise.file.url);
                dispatchEvent(new CameraEvent(CameraEvent.FILE_READY, file));
            }
        }

        protected function loaderCompleted(event:Event):void
        {
            var loaderInfo:LoaderInfo = event.target as LoaderInfo;
            if (CameraRoll.supportsAddBitmapData)
            {
                var bitmapData:BitmapData = new BitmapData(loaderInfo.width, loaderInfo.height);
                bitmapData.draw(loaderInfo.loader);
                file = File.applicationStorageDirectory.resolvePath("receipt" + new Date().time + ".jpg");
                var stream:FileStream = new FileStream()
                stream.open(file, FileMode.WRITE);
                var j:JPEGEncoder = new JPEGEncoder();
                var bytes:ByteArray = j.encode(bitmapData);
                stream.writeBytes(bytes, 0, bytes.bytesAvailable);
                stream.close();
                trace(file.url);
                dispatchEvent(new CameraEvent(CameraEvent.FILE_READY, file));
            }
        }

    }
}
于 2012-04-13T03:04:36.997 に答える