圖片佔用記憶體計算方法
Android中有四種,分別是:
ALPHA_8:每個畫素佔用1byte記憶體
ARGB_4444:每個畫素佔用2byte記憶體
ARGB_8888:每個畫素佔用4byte記憶體
RGB_565:每個畫素佔用2byte記憶體
Android預設的顏色模式為ARGB_8888,這個顏色模式色彩最細膩,顯示質量最高。但同樣的,佔用的記憶體也最大。
舉例說明一個32位的PNG也就是ARGB_8888,畫素是1204*1024,那麼佔用空間是:
1024*1024*(32/8)
因為8bit = 1 byte, 32位就是4byte. 我們在解析圖片的時候為了方式oom最好使用ARGB_4444模式. 節省一半的記憶體空間.
===================================================================
Android中一張圖片(BitMap)佔用的記憶體主要和以下幾個因數有關:圖片長度,圖片寬度,單位畫素佔用的位元組數。 一張圖片(BitMap)佔用的記憶體=圖片長度*圖片寬度*單位畫素佔用的位元組數 注:圖片長度和圖片寬度的單位是畫素。 圖片(BitMap)佔用的記憶體應該和螢幕密度(Density)無關,雖然我暫時還拿不出直接證據。 建立一個BitMap時,其單位畫素佔用的位元組數由其引數BitmapFactory.OptionsEnum Values | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
ALPHA_8 |
Each pixel is stored as a single translucency (alpha) channel. This is very useful to efficiently store masks for instance. No color information is stored. With this configuration, each pixel requires 1 byte of memory. 此時圖片只有alpha值,沒有RGB值,一個畫素佔用一個位元組 | ||||||||||
ARGB_4444 |
This field is deprecated. Because of the poor quality of this configuration, it is advised to use instead. 這種格式的圖片,看起來質量太差,已經不推薦使用。 Each pixel is stored on 2 bytes. The three RGB color channels and the alpha channel (translucency) are stored with a 4 bits precision (16 possible values.) This configuration is mostly useful if the application needs to store translucency information but also needs to save memory. It is recommended to use ARGB_8888 instead of this configuration. 一個畫素佔用2個位元組,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各佔4個bites,共16bites,即2個位元組 |
||||||||||
ARGB_8888 |
Each pixel is stored on 4 bytes. Each channel (RGB and alpha for translucency) is stored with 8 bits of precision (256 possible values.) This configuration is very flexible and offers the best quality. It should be used whenever possible 一個畫素佔用4個位元組,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各佔8個bites,共32bites,即4個位元組 這是一種高質量的圖片格式,電腦上普通採用的格式。它也是Android手機上一個BitMap的預設格式。 |
||||||||||
RGB_565 |
Each pixel is stored on 2 bytes and only the RGB channels are encoded: red is stored with 5 bits of precision (32 possible values), green is stored with 6 bits of precision (64 possible values) and blue is stored with 5 bits of precision. This configuration
can produce slight visual artifacts depending on the configuration of the source. For instance, without dithering, the result might show a greenish tint. To get better results dithering should be applied. This configuration may be useful when using opaque
bitmaps that do not require high color fidelity. 一個畫素佔用2個位元組,沒有alpha(A)值,即不支援透明和半透明,Red(R)值佔5個bites ,Green(G)值佔6個bites ,Blue(B)值佔5個bites,共16bites,即2個位元組.對於沒有透明和半透明顏色的圖片來說,該格式的圖片能夠達到比較的呈現效果,相對於ARGB_8888來說也能減少一半的記憶體開銷。因此它是一個不錯的選擇。另外我們通過android.content.res.Resources來取得一個張圖片時,它也是以該格式來構建BitMap的. 從Android4.0開始,該選項無效。即使設定為該值,系統任然會採用 ARGB_8888來構造圖片 |
透明度 紅色綠色藍色 簡單點說
佔用記憶體的計算方向 |
一張100*100的圖片佔用記憶體的大小 |
|
ALPHA_8 |
圖片長度*圖片寬度 |
100*100=10000位元組 |
ARGB_4444 |
圖片長度*圖片寬度*2 |
100*100*2=20000位元組 |
ARGB_8888 |
圖片長度*圖片寬度*4 |
100*100*4=40000位元組 |
RGB_565 |
圖片長度*圖片寬度*2 |
100*100*2=20000位元組 |
相關推薦
圖片佔用記憶體計算方法
Android中有四種,分別是: ALPHA_8:每個畫素佔用1byte記憶體 ARGB_4444:每個畫素佔用2byte記憶體 ARGB_8888:每個畫素佔用4byte記憶體 RGB_565:每個畫素佔用2byte記憶體 Android預設的顏色模式為ARG
Java中物件佔用記憶體計算方法
普通物件的結構如下,按64位機器的長度計算1. 物件頭(_mark), 8個位元組2. Oop指標,如果是32G記憶體以下的,預設開啟物件指標壓縮,4個位元組3. 資料區4.Padding(記憶體對齊),按照8的倍數對齊陣列物件結構是1. 物件頭(_mark), 8個位元組2
Android中圖片佔用記憶體的計算
本人的網易部落格原文 在Android開發中,我現在發現很多人還不會對圖片佔用記憶體進行很好的計算。因此撰寫該博文來做介紹,期望達到拋磚引玉的作用。 Android中一張圖片(BitMap)佔用的記憶體主要和以下幾個因數有關:圖片長度,圖片寬度,單位畫素佔用的位元組
android 圖片佔用記憶體大小及載入解析
*本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 在講解圖片佔用記憶體前,我們先問自己幾個問題: 我們在對手機進行螢幕適時,常想可不可以只切一套圖適配所有的手機呢? 一張圖片載入到手機中,佔用記憶體到底有多少? 圖片佔用記憶體跟哪些東西
Android中對圖片的記憶體優化方法
Android 中對於圖片的記憶體優化方法1. 對圖片本身進行操作儘量不要使用 setImageBitmap、setImageResource、BitmapFactory.decodeResource來
C/C++中結構體佔用記憶體大小的計算方法
引言 結構體在C語言中雖然經常使用,但是怎麼計算一個結構體佔用多大的記憶體,很多C語言的新手都沒注意過,其實C語言的語法簡單,難就難在它更偏向於與底層,與記憶體打交道。對於嵌入式方面來說,對C語言的要求更高,因為有些硬體的記憶體並不像我們使用的電腦的記憶體那麼充裕,所以需
計算兩張圖片相似度的方法總結
title rac 相似度 無法 tween hive any 明顯 embed python工具包-pyssim 簡介 python工具包,用來計算圖像之間的結構相似性 (Structural Similarity Image Metric: SSIM)。結構相似性介紹
載入大圖片到記憶體的合理方法
圖形影象處理 先明確幾個概念。 1.關於單位:計算機中最小單位是位元bit,即一個0或者一個1,計 算機儲存檔案是以byte為單位,byte是位元組等於8個位元。 1M=1024kb;1kb=1024byte;1byte=8bit; 2.計算機如何表示圖形:以畫素為單位,組
w3wp.exe程序佔用記憶體過高解決方法
解決CPU佔用過多: 1、在IIS中對每個網站進行單獨的應用程式池配置。即互相之間不影響。 2、設定應用程式池的CPU監視,不超過25%(伺服器為4CPU),每分鐘重新整理,超過限制時關閉。 根據w3wp取得是哪一個應用程式池: 1、在工作管理員中增加顯示pid欄位。就可以看到佔用記憶體或者cpu最高
iOS 如何計算圖片載入記憶體中所佔的大小
首先圖片自動縮放到2的n次方大小,例如200 * 300畫素 會變成256 * 512大小。 圖片記憶體大小的計算公式 寬度 * 高度 * bytesPerPixel/8。 bytesPerPixel : 每個畫素所佔的位元組數。 RGB顏色空間下 每個顏色分量由8位組成
Android之帶你從原始碼解析Bitmap佔用記憶體正確的計算公式
Bitmap 前言 Bitmap簡介 畫素儲存方式 圖片壓縮格式 Bitmap記憶體計算 釋放記憶體 獲取Bitmap所佔記憶體 計算所佔記憶體 舉例 Bitmap.getAllo
檢視redis佔用記憶體大小的方法
檢視redis佔用記憶體大小的方法 redis-cli auth 密碼 info Memory used_memory:13490096 //資料佔用了多少記憶體(位元組) used_memory_human:12.87M //資料佔用了多少記憶體(帶單位的,可讀性好)
一張100px*100px的圖片在記憶體中會佔用多大記憶體
轉: http://www.cnblogs.com/YuangPong/p/6694512.html 在實際開發當中我們經常會忽視如題問題,只是知道圖片越小越好,甚至根本不知道如何計算,今天筆者就拋磚引玉一把! Android中一張圖片(Bitmap)
C++中虛擬函式工作原理和 虛 繼承類的記憶體佔用大小計算
虛擬函式的實現要求物件攜帶額外的資訊,這些資訊用於在執行時確定該物件應該呼叫哪一個虛擬函式。典型情況下,這一資訊具有一種被稱為 vptr(virtual table pointer,虛擬函式表指標)的指標的形式。vptr 指向一個被稱為 vtbl(virtual t
每日新聞:中國母嬰幼市場將達3萬億;基於記憶體計算技術的智慧晶片問世;谷歌推圖片壓縮工具Squoosh;騰訊選定全球地圖資料提供商...
關注中國軟體網最新鮮的企業級乾貨聚集地趨勢洞察艾瑞諮詢:2020年中國母嬰童市場將達到3萬億元圖
Golang計算單個Goroutine佔用記憶體
一直在想單個Goroutine大概佔用多少記憶體呢?今天無意間在《Concurrency Go》中看到了這段計算單個Goroutine記憶體佔用大小的程式碼,分享給同樣有迷惑人。 在Win7 Go1.
Drawable與Bitmap佔用記憶體大小與比較decodeResource與decodeStream方法的效率
今天做了個記憶體優化的小測試,包括兩點 1, 比較Drawable與Bitmap佔用記憶體大小 2, 比較BitmapFactory類的decodeResource方法與decodeStream方法的效率 好吧,先來看第1個測試! 以下這個是測試載入1000個Drawable物件的程式碼
如何優化圖片佔用的記憶體空間?
對於載入圖片,一般為了儘可能避免OOM都會按照如下做法: 對於圖片顯示:根據需要顯示圖片控制元件的大小對圖片進行壓縮顯示(取樣率inSampleSize及矩陣Matrix)。 如果圖片數量非常多:則會使用LruCache等快取機制,將所有圖片佔據的內容維持在一個範圍內。 其實對於圖片載
C# Winform應用程式佔用記憶體較大解決方法整理(轉)
原文:http://www.jb51.net/article/56682.htm 背景: 微軟的 .NET FRAMEWORK 現在可謂如火如荼了。但是,.NET 一直所為人詬病的就是“胃口太大”,狂吃記憶體,雖然微軟聲稱 GC 的功能和智慧化都很高,但是記憶體的回收
Java IO速度和佔用記憶體的極致優化方法,模板方法【從hdu 2602 說起】
談起java,給人的第一映像是什麼?除了簡單方便易上手,跨平臺可移植,各種函式庫支援類應有盡有不用重複造輪子這些特性之外,恐怕就是速度慢,佔用記憶體高了吧。不可否認,java執行速度和記憶體佔用方便確實無法比肩C/C++。隨手舉一個很直觀的栗子,在ACM等其他演算法競賽中,