我的JPGEncoder有什么问题

时间:2012-06-23 14:09:46

标签: actionscript-3

这是我的代码

     if (event.target.content is Bitmap)
{

    infotext.text = "got something";
    var image:Bitmap = Bitmap(event.target.content);
    var bitmapData:BitmapData = image.bitmapData;
    this.addChild(image);
    var j:JPGEncoder = new JPGEncoder(100);
    var bytes:ByteArray = new ByteArray();
    bytes=j.encode(bitmapData);
}
else
{
    throw new Error("What the heck bob?");
}

当我运行调试会话时,一切正常,直到到达行

      bytes=j.encode(bitmapData);

之后没有任何反应,我的程序只是陷入困境请帮忙


我根据您的建议更改了代码

           var myImage:Bitmap =Bitmap(e.target.content);


    var bitmapData:BitmapData = new      BitmapData(myImage.width,myImage.height,true,0xffffffff);
    bitmapData.draw(myImage);

    var encoder:JPGEncoder = new JPGEncoder();
    var bytes:ByteArray = encoder.encode(bitmapData);

    this.addChild(myImage);

但是在

后再次卡住了
       var bytes:ByteArray = encoder.encode(bitmapData);

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

很明显我很久以前遇到过同样的问题所以我从那时起就开始了我的代码工作。 在查看代码后,我看到的唯一不同的是我首先构造bitMapData并通过load函数分配图像 所以我认为你的问题在于构造bitmapData var 以下代码块是从我创建的函数中删除的,该函数执行了许多其他图像处理 所以基本上它是一个减少版本,未经测试但它应该工作。

var myImage:Image = new Image();
myImage.load( Bitmap(event.target.content) );

var bitmapData:BitmapData = new BitmapData(myImage.width, myImage.height, true, 0xffffffff );
bitmapData.draw(myImage); 

var encoder:JPEGEncoder = new JPEGEncoder();
var data:ByteArray = encoder.encode(bitmapData);

this.addChild(myImage);

答案 1 :(得分:0)

万一有人碰到这个,请确保你使用的是bytearray JPEGEncoder类,它更快:http://www.bytearray.org/?p=775

as3core是JPGEncoder而不是JPEGEncoder。 JPG vs JPEG ......这也让我感到高兴。