2012-06-23 113 views
0

这里是我的代码有什么不对我JPGEncoder

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

我在做什么错在这里后,再次卡住?

+0

你确定bytes.j.encode(bitmapData); 您发布的代码中没有该行。 –

+0

对不起,这是一个错字,但你知道我的意思 – hitek

+0

只是验证它是你的文章中的错字,而不是在你的代码。 –

回答

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

我在代码中实现了这些更改,但无济于事,你能告诉我我在这里做错了什么。 – hitek

+0

你没有得到任何错误,它只是挂在与encoder.encode(bitmapData)的行;?您使用JPEGEncoder库的源是什么? –

+0

确保您使用的是该库。 https://github.com/mikechambers/as3corelib –

0

万一有人运行到这一点,请确保您使用的是字节组JPEGEncoder类,它的速度更快:http://www.bytearray.org/?p=775

的as3core是JPGEncoder不JPEGEncoder。 JPG和JPEG ...这也让我也。