如果我在Flex中使用加載程序加載位圖,則可以使用loaderInfo.bytesTotal獲取位圖的大小(使用的總字節數)。查找Flex中位圖使用的總字節數
如果我在運行時創建一個位圖,我怎麼才能找出這個位圖的大小,總字節數。
請指教。謝謝
如果我在Flex中使用加載程序加載位圖,則可以使用loaderInfo.bytesTotal獲取位圖的大小(使用的總字節數)。查找Flex中位圖使用的總字節數
如果我在運行時創建一個位圖,我怎麼才能找出這個位圖的大小,總字節數。
請指教。謝謝
var bitmapByteSize:int = bitmap.bitmapData.getPixels(bitmap.bitmapData.rect).length;
這可能會訣竅。
我覺得比一個更好的解決方案上面會:
var bitmapByteSize:uint = bitmap.bitmapData.width * bitmap.bitmapData.height * 4;
這是因爲使用通過getPixels()方法創建一個額外的ByteArray,所以它是既緩慢,並使用額外的內存。
JStriedl,謝謝你的回覆。我曾嘗試過類似的方法。 var byteArray:ByteArray = _bitmap.bitmapData.getPixels(new Rectangle(0,0,_bitmap.width,_bitmap.height)); _bitmapTotalBytes = byteArray.length; 但是,_bitmapTotalBytes比原始jpg文件大得多,儘管我已經減小了寬度和高度。 你知道爲什麼嗎?謝謝。 – michael 2009-10-01 18:43:15
當存儲在磁盤上時,jpeg格式被壓縮,並且必須解壓才能顯示。因此,ByteArray的長度將比文件大得多,因爲它表示未壓縮,可顯示格式的像素數據,而不是原始壓縮的JPEG文件大小。 – JStriedl 2009-10-01 18:55:51
Striedl,謝謝。 – michael 2009-10-01 19:00:09