我想使用 FileSteam.open() 从磁盘同步读取图像文件。然后我可以使用 readBytes() 将它们放入 ByteArray,但我找不到如何将其放入 BitmapData。我知道 Image 可以按原样读取,但我需要 BitmapData。
有什么建议么?
我想使用 FileSteam.open() 从磁盘同步读取图像文件。然后我可以使用 readBytes() 将它们放入 ByteArray,但我找不到如何将其放入 BitmapData。我知道 Image 可以按原样读取,但我需要 BitmapData。
有什么建议么?
在包flash.display
中,使用Loader::loadBytes
...这会给你一个Bitmap
,BitmapData
然后可以简单地通过Bitmap::bitmapData
...这使得整个操作是异步的,当然...你唯一能做的就是自己编写一个解码器...
现在在 AS3 中有一个 PNG编码器,在 as3corelib 中,我猜还有其他的,但可能大多数人认为编写解码器毫无意义,因为 flash 本身就是这样做的,而且编码比解码更容易,因为解码意味着,你必须实现整个格式......不过,你当然可以试一试......
嗯,希望有帮助...
问候
back2dos
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 线程(导致应用程序结结巴巴)。但可能有一些用例。
这是有道理的,因为 FileStream 用于管理纯数据,而 BitmapData 用于编译或反编译数据。
我即将使用的方式,是读取origin中的文件,并在应用程序目录中写入一个临时文件,Loader类可以顺利到达。
祝我好运!