我正在使用此方法对BitmapData进行编码: http://www.websector.de/blog/2009/06/21/speed-up-jpeg-encoding-using-alchemy/
代码示例:
var loader:CLibInit = new CLibInit;
as3_jpeg_wrapper = loader.init();
var baSource: ByteArray = bitmapData.clone().getPixels( new Rectangle( 0, 0, WIDTH, HEIGHT) );
var baAlchmey: ByteArray = as3_jpeg_wrapper.write_jpeg_file(baSource, WIDTH, HEIGHT, 3, 2, quality);
编码后我需要将生成的byteArray转换回BitmapData。我正在使用setPixels()
方法。
例如:
baAlchemy.position = 0;
var bd:BitmapData = new BitmapData(width, height);
bd.setPixels(rect, baAlchemy);
我得到“错误#2030:遇到文件结尾?”。
有人能帮助我吗?
答案 0 :(得分:1)
看起来您正试图将压缩JPEG的字节传递给setPixels()
。
但是,根据文档setPixels()
,第二个参数是:
ByteArray对象,包含要在矩形区域中使用的32位未经过相乘的像素值
或者,换句话说,是未压缩的图像。在将图像渲染为BitmapData