0

これが私のコードです。私が達成しようとしているのは、カメラから画像をキャプチャしてメディアサーバーにアップロードできるようにすることですが、これまでのところ正常にエンコードできませんでした.誰かが私を正しい方向に向けてください.

ここにコードがあります

  var imagePromise:MediaPromise = event.data;
  imageLoader = new Loader();
  imageLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, asyncImageLoaded );
  imageLoader.addEventListener( IOErrorEvent.IO_ERROR, cameraError );
  imageLoader.loadFilePromise( imagePromise );
  function asyncImageLoaded(event:Event):void
    {

var destination:String = "upload.php";
var now:Date = new Date();
var fileName = "IMG" + now.fullYear + now.month + ".jpg";
var image:Bitmap = Bitmap(imageLoader.content);
var bitmapData:BitmapData = image.bitmapData;
var j = new JPGEncoder(80);
var bytes:ByteArray = j.encode(bitmapData);

      }

これは、画像をエンコードしようとしたときに発生するエラーです

TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。

4

1 に答える 1

1

どのライン?1009 は、NULL である何かの変数にアクセスしようとしていることを意味します。この場合、おそらく次の行だと思います。

var image:Bitmap = Bitmap(imageLoader.content);

これを追加してみてください:

if (imageLoader.content is Bitmap) {
    var image:Bitmap = Bitmap(imageLoader.content);
} else {
    throw new Error("What the heck bob?");
}

エラーの場合は、コンテンツが適切にデコードされていないに違いありません (これは、image/jpg ではない MIME タイプを意味する可能性があります)。

さらに、速度のためにネイティブの jpeg エンコーダーを使用することもできます: (flash 11 だと思いますか?)

var byteArray:ByteArray = new ByteArray(); 
bitmapData.encode(new Rectangle(0,0,640,480), new flash.display.JPEGEncoderOptions(), byteArray);

http://help.adobe.com/en_US/as3/dev/WS4768145595f94108-17913eb4136eaab51c7-8000.html

于 2012-06-21T17:54:50.980 に答える