【问题标题】:Find the total bytes used by a bitmap in Flex在 Flex 中查找位图使用的总字节数
【发布时间】:2010-12-03 01:36:23
【问题描述】:

如果我在 Flex 中使用加载器加载位图,我可以使用 loaderInfo.bytesTotal 来获取位图的大小、使用的总字节数。

如果我在运行时创建位图,我怎样才能知道该位图的大小和使用的总字节数。

请指教。谢谢

【问题讨论】:

    标签: flash actionscript-3 flex3 bitmap


    【解决方案1】:

    我认为比上述更好的解决方案是:

    var bitmapByteSize:uint = bitmap.bitmapData.width * bitmap.bitmapData.height * 4;
    

    这是因为使用 getPixels() 方法会创建一个额外的 ByteArray,所以它既慢又占用额外的内存。

    【讨论】:

    • 谢谢。等式中的“*4”是什么意思。我的意思是为什么要乘以 4 而不是其他数字。谢谢。
    • 抱歉,回复延迟,迈克尔。这是因为 BitmapData 中有四个 8 位通道(RGB 和 alpha)。所以我们取位图中的像素数(宽*高),然后乘以通道数(4)乘以每个通道的字节数(1),得到位图中的总字节数。跨度>
    【解决方案2】:

    var bitmapByteSize:int = bitmap.bitmapData.getPixels(bitmap.bitmapData.rect).length;

    这可能会奏效。

    【讨论】:

    • JStriedl,感谢您的回复。我之前尝试过类似的方法。 var byteArray:ByteArray = _bitmap.bitmapData.getPixels(new Rectangle(0, 0, _bitmap.width, _bitmap.height)); _bitmapTotalBytes = byteArray.length;但是,_bitmapTotalBytes 比原始 jpg 文件大得多,虽然我已经减小了宽度和高度。你知道为什么吗?谢谢。
    • jpeg格式存储在磁盘上是压缩的,必须解压才能显示。因此,ByteArray 的长度将比文件大得多,因为它表示的是未压缩、可显示格式的像素数据,而不是原始压缩的 JPEG 文件大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2015-07-22
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多