什么是从bitmapData获取jpg的最简单方法

时间:2011-04-19 11:54:19

标签: actionscript-3 adobe

我需要将从影片剪辑中抓取的bitmapData转换为jpeg或png。是否有一些lib?

3 个答案:

答案 0 :(得分:7)

在将字节转换为图像的take部分中查看此示例,我已将整数作为参考

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

答案 1 :(得分: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传递给编译器。

答案 2 :(得分:1)

这不是最简单的方法,但根据图像的尺寸,可能值得一看。 Jens Krause已经使用Alchemy编译了jpeglib,它的编码速度比as3corelib版本快得多,甚至比Thibault Imbert改进的AS3版本更快:

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