2011-04-19 66 views

回答

7

看到這個例子中取一部分,其將字節的圖像,我已經給整個供您參考

package { 
    import encoding.JPGEncoder; 
    import flash.display.Bitmap; 
    import flash.display.BitmapData; 
    import flash.display.Loader; 
    import flash.display.Sprite; 
    import flash.utils.ByteArray; 
    import flash.events.Event 

    public class Converter extends Sprite { 

     [Embed(source = "image.jpg")] 
     private var image:Class 

     private const QUALITY:uint = 80; 

     public function Converter():void { 

      var bitmap:Bitmap = new image(); 
      var bitmapData:BitmapData = bitmap.bitmapData; 

      //encode BitmapData to JPG 
      var encoder:JPGEncoder = new JPGEncoder(QUALITY); 
      var rawBytes:ByteArray = encoder.encode(bitmap.bitmapData); 

      //decode JPG ByteArray back to BitmapData 
      var loader:Loader = new Loader(); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, getBitmapData) 
      loader.loadBytes(rawBytes); 
     } 

     private function getBitmapData(e:Event):void { 
      var decodedBitmapData:BitmapData = Bitmap(e.target.content).bitmapData 
      trace(decodedBitmapData); 
     } 
    } 
} 
+0

這就是我需要的 – Eugeny89 2011-04-19 12:13:12

1

這不是最簡單的方法,但根據您的圖像的尺寸,可能是值得一看。延斯·克勞斯編制jpeglib與鍊金術,它編碼速度遠遠超過的as3corelib的版本,甚至蒂博因貝特的改進AS3版本:

http://www.websector.de/blog/2009/06/21/speed-up-jpeg-encoding-using-alchemy/

+0

hm,這非常有趣。我曾經想過,通過鍊金術可以提高生產力! – Eugeny89 2011-04-19 14:41:49

+0

在我們的應用程序中,它幾乎是一個10倍的加速。 – 2011-04-19 20:55:04

6

現在,您可以使用內置到Flash Player 11.3和AIR 3.3的原生JPEG編碼。

var quality:int = 50; 
var bounds:Rectangle = bitmapData.rect; 
var result:ByteArray = bitmapData.encode(bounds, new JPEGEncoderOptions(50)); 

這需要-swf-version=16被傳遞到編譯器。

+0

對於-swf-version參數爲+1(無法讓編碼自己工作,但是做到了) – frankhermes 2012-06-21 13:11:56

相關問題