0

这是我的代码

     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);

我在这里做错了什么?

4

2 回答 2

0

以防万一有人遇到这种情况,请确保您使用的是 bytearray JPEGEncoder 类,它更快:http ://www.bytearray.org/?p=775

as3core 是 JPGEncoder 而不是 JPEGEncoder。JPG vs JPEG ......这也让我着迷。

于 2013-04-22T16:54:26.970 回答
0

很确定我很久以前遇到过同样的问题,所以我从那时起提取了我的代码,我开始工作了。
查看代码后,我发现唯一不同的是我首先构造了 bitMapData 并通过加载函数分配图像。
所以我认为你的问题在于 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);
于 2012-06-23T15:25:21.957 回答