【问题标题】:AS3/Air: PNG > File > FileStream > ByteArray > BitmapDataAS3/Air:PNG > 文件 > FileStream > ByteArray > BitmapData
【发布时间】:2010-11-14 02:19:41
【问题描述】:

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

有什么建议吗?

【问题讨论】:

  • 听起来很退出......期待你的结果...... :)
  • 非常酷……有发布它的计划吗?这将是对 as3corelib 和 hxformat 的一个很好的修正......我认为隔行扫描并不是真正需要的......据我所知,加载或嵌入隔行扫描的 PNG 也不起作用,所以 - 除了完美主义 - 为什么期望更多?
  • 我还没有完成这个...但我确实看到 Flash 11 中有一个新的异步加载例程,这可能会使这种方式比现在更小众,因为它似乎可以处理位图数据。

标签: actionscript-3 air filestream bitmapdata


【解决方案1】:

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

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

嗯,希望对你有所帮助...

问候

back2dos

【讨论】:

  • 再次感谢。 ::sigh:: 所以我想我没有直接的方法来同步加载 BitmapData 吗?
  • 恐怕没有......如果你找到了,请告诉我...... :) 你总是希望,hxformat (code.google.com/p/hxformat) 有朝一日最终会包含一个 PNG 解码器,然后编译一个你可以在你的项目中使用的 swc,但在那之前,我什至不知道有一个 lib 为你做这项工作......或者也许有一天会有一个同步版本的Loader::loadBytes(这将在某些情况下真的很酷)......无论如何祝你好运......;)
  • 我花了一天时间研究 PNG 解码器。以前从来没有这样做过。我完成了大部分工作(杂乱无章),但撤消过滤有点棘手。我现在还有更重要的事情要完成,但如果我以后有时间完成它,我会告诉你的。
  • 我一直在看PNGDecoder......虽然它有点工作 - 它得到了所有的块和什么......实现所有不同类型的隔行扫描的想法有点超越我眼下。我正在使用来自同步加载的 PNG 数据的 loadBytes。 PNG > 文件 > FileStream > ByteArray > Loader.loadBytes > BitmapData
【解决方案2】:

这很有意义,因为 FileStream 用于管理纯数据,而 BitmapData 用于编译或反编译数据。

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

祝我好运!

【讨论】:

  • 祝你好运!如果您发现任何有用的信息,请告诉我们。
【解决方案3】:

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 线程(导致应用口吃)。但可能会有一些用例。

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 2014-05-03
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多