2012-06-23 47 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 ...這也讓我也。