图片在内存中的占用的空间大小
這個話題有點底層了
由于在開發當中尤其是在嵌入式設備開發當中,我們對內容使用要求很高,如Android的設備在開發過程中,我們在加載圖片資源的時候,如果圖片資源使用不合理經常會出現內存溢出的問題(安卓里面叫做 om(out memory) ios里面叫 內存過大),這個問題很是讓人頭疼。所以我們如果想要更好的把控內存的使用,因此了加載一個圖片(Bitmap對象)會占用多少內存就顯得至關重要。
下面我們就以Android的設備為例來講述,首先我們要了解一下圖片在內存中是什么樣子的存在。其實無論什么樣圖片在讀到內存中就是一個矩陣模型的數據,無論在外存(機身存儲或sd卡等)中是以jpg、png或者其他格式的圖片讀到內存中都是一樣的,它在對內存的占用只與該圖片的分辨率、像素模式(ARGB、RGB)、像素位數(8位、16位、32位等,其中我們通常使用的是8位的像素及0-255或0x00-0xFF)。我們圖片在內存中的大小是由這三個要素決定。
如100x100的png圖片
分辨率為100x100
像素模式為ARGB(支持透明度,A就是Alpha透明度),就是一個像素需要使用四個基色表示。
像素位數:通常為8位 0-255
圖片所占內存大小則是:100x100x4x8/8=40000Byte 不到40KB
大致的計算方式就是上面所講的。所以在使用圖片的時候尤其是圖片分辨率比較大的時候就要注意內存的使用情況,盡可能的使用多少圖片就用多少,用不到的就是釋放掉;
還有特別注意的就是:在使用畫布畫圖的時候生成的畫布不要太大,大小分辨率夠用即可如果太大,有可能光一個畫布就直接把內存給占完了。加入我們生成一個10240x10240分辨率的畫布所占內存就是400MB,所以對畫布的使用一定要慎重。
————————————————
1024 * 1024 像素的 是 400m
假設 iphone上 放一張 圖片 ,計算方法也是一樣的, 但是如果給出圖片是 1024 * 1024 點 的 大小,那么這個圖片顯示到屏幕所消耗的內存還與 屏幕的 倍數有關, 比如 6 是 @2X的 也就是說 一個點 占 2 * 2 = 4個像素,這樣來看 在蘋果6 上1024 * 1024點 =1024 * 1024 * 4(4倍的點才是像素) * 4(四個基色) * 8 /8 byte = 16m
分析可能有漏洞,僅供參考,歡迎評論區討論
參考鏈接:https://blog.csdn.net/w1144054497/article/details/50903285/
總結
以上是生活随笔為你收集整理的图片在内存中的占用的空间大小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript调用dll_Blaz
- 下一篇: 王者荣耀巅峰赛荣耀战力可以做什么 巅峰赛