0

我想使用 FileSteam.open() 从磁盘同步读取图像文件。然后我可以使用 readBytes() 将它们放入 ByteArray,但我找不到如何将其放入 BitmapData。我知道 Image 可以按原样读取,但我需要 BitmapData。

有什么建议么?

4

3 回答 3

5

在包flash.display中,使用Loader::loadBytes...这会给你一个BitmapBitmapData然后可以简单地通过Bitmap::bitmapData...这使得整个操作是异步的,当然...你唯一能做的就是自己编写一个解码器...

现在在 AS3 中有一个 PNG编码器,在 as3corelib 中,我猜还有其他的,但可能大多数人认为编写解码器毫无意义,因为 flash 本身就是这样做的,而且编码比解码更容易,因为解码意味着,你必须实现整个格式......不过,你当然可以试一试......

嗯,希望有帮助...

问候

back2dos

于 2009-07-26T09:08:23.730 回答
0

github 上的这个库有一个可以同步工作的 PNGDecoder。试试看:

https://github.com/terrynoya/ASImageLib

从使用维基:

var bytes:ByteArray = [PNG bytes];
var bmpData:BitmapData = new PNGDecoder().decode(bytes);
this.addChild(new Bitmap(bmpData));

但我想使用内置类会更快,虽然它取决于您的用例,通常在处理像图像这样的 UI 时,首选异步以避免阻塞 UI 线程(导致应用程序结结巴巴)。但可能有一些用例。

于 2014-02-14T18:13:24.787 回答
-1

这是有道理的,因为 FileStream 用于管理纯数据,而 BitmapData 用于编译或反编译数据。

我即将使用的方式,是读取origin中的文件,并在应用程序目录中写入一个临时文件,Loader类可以顺利到达。

祝我好运!

于 2011-09-22T22:47:23.817 回答