JPEG3中的JPEGencode问题

时间:2012-06-21 16:19:57

标签: actionscript-3

这是我的代码。我想要实现的是能够从相机捕获图像并将其上传到媒体服务器,但到目前为止我还没能成功编码。有人请指出我正确的方向。

这是代码

  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:无法访问空对象引用的属性或方法。

1 个答案:

答案 0 :(得分: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?");
}

如果这是一个错误,我打赌内容没有正确解码(这可能意味着一个不是图像/ jpg的mime类型)

此外,你可以使用原生的jpeg编码器来提高速度:(我相信闪光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