1

我正在使用这种方法对 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:遇到文件结尾?”。

有谁能够帮助我?

4

1 回答 1

1

看起来您正在尝试将压缩 JPEG 的字节传递到setPixels().

但是,根据文档setPixels(),第二个参数是:

一个 ByteArray 对象,由要在矩形区域中使用的 32 位未相乘像素值组成

或者,换句话说,未压缩的图像。您首先必须解压缩图像,然后才能将其渲染为BitmapData

于 2013-11-06T16:22:27.643 回答