AS3/Air:PNG> File> FileStream> ByteArray> BitmapData

问题描述:

我想使用FileSteam.open()从磁盘同步读取映像文件。然后我可以使用readBytes()将它们放入ByteArray中,但是我找不到如何将它放入BitmapData中。我知道图像可以读取它,但我需要BitmapData。AS3/Air:PNG> File> FileStream> ByteArray> BitmapData

有什么建议吗?

在包 flash.display
+0

声音出来......期待您的结果... :) – back2dos 2009-07-29 12:39:20

+0

非常酷......任何有关释放它的计划?这将是一个巨大的ammendment双方的as3corelib和hxformat ... 我认为隔行是不是真的需要?据我所知,无论是装载或嵌入交错的PNG也不管用,所以 - 除了完美 - 为什么期望更多? – back2dos 2010-01-13 14:09:57

+0

我还没有得到来完成这个尚未...但我确实看到有在Flash 11新的异步加载程序比它已是因为它似乎处理位图数据可能使这种方式更加的利基。 – grey 2011-10-26 13:04:26

,使用Loader::loadBytes ...这会给你一个Bitmap,和BitmapData然后可以通过Bitmap::bitmapData简单地访问......这使得整个操作是异步的,当然......唯一你可以做的,是自己写一个解码器...

现在有一个PNG 编码器在AS3,在的as3corelib,我想甚至有别人,但可能大多数人都认为这是毫无意义的写一个解码器,因为闪光灯本身就是这样做的,而且编码也比解码更容易,因为解码意味着,你必须实现整个格式......但是,你可以给它一个短片è...

好,希望帮助...

格尔茨

back2dos

它具有意义,因为工作的FileStream管理纯数据,和BitmapData工程编译或反编译的数据。

即将使用的方式IM,是阅读原点的文件,并写入应用程序目录,可以通过Loader类没有烦恼达成一个临时文件。

祝我好运!

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线程(导致应用程序结束),首选异步。但可能会有一些用例。