【发布时间】:2011-04-19 11:54:18
【问题描述】:
我需要将从影片剪辑中抓取的 bitmapData 转换为 jpeg 或 png。有没有一些库?
【问题讨论】:
标签: actionscript-3 adobe
我需要将从影片剪辑中抓取的 bitmapData 转换为 jpeg 或 png。有没有一些库?
【问题讨论】:
标签: actionscript-3 adobe
在将字节转换为图像的部分中查看此示例,我已给出完整供您参考
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);
}
}
}
【讨论】:
您现在可以使用 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 传递给编译器。
【讨论】:
这不是最简单的方法,但根据图像的尺寸,可能值得一看。 Jens Krause 使用 Alchemy 编译了 jpeglib,它的编码速度比 as3corelib 的版本快得多,甚至比 Thibault Imbert 改进的 AS3 版本要快:
http://www.websector.de/blog/2009/06/21/speed-up-jpeg-encoding-using-alchemy/
【讨论】: