AS3 Alchemy和ByteArray.setPixels()问题。 “bytearray.position = 0”不起作用

时间:2013-11-06 11:59:41

标签: actionscript-3 bytearray alchemy

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

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

看起来您正试图将压缩JPEG的字节传递给setPixels()

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

  

ByteArray对象,包含要在矩形区域中使用的32位未经过相乘的像素值

或者,换句话说,是未压缩的图像。在将图像渲染为BitmapData

之前,您首先需要decompress图像