導航:首頁 > 操作系統 > android大圖片內存

android大圖片內存

發布時間:2022-05-23 09:20:51

android中一張20k的圖片,我給他分別添加在10X10與 20X20的兩個imageView中,請問他倆誰佔得內存大

占的內存一樣大, 跟你設置大小沒關系,首先是載入圖片,然而android 機制不比iOS,不能自動處理圖片資源,所以直接載入

Ⅱ Android createBitmap創建大尺寸圖像時,內存溢出out of memory(OOM)

BitmapFactory.Options bfOptions=new BitmapFactory.Options();
bfOptions.inDither=false;//使圖片不抖動。不是很懂
bfOptions.inPurgeable=true;//使得內存可以被回收
bfOptions.inTempStorage=new byte[12 * 1024]; //臨時存儲
File file = new File(path);//path:圖片的絕對地址
FileInputStream fs=null;
try {
fs = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Bitmap bmp = null;
if(fs != null) {
try {
bmp = BitmapFactory.decodeFileDescriptor(fs.getFD(), null, bfOptions); //這樣莫非就讓bmp到了臨時存儲的位置?
} catch (IOException e) {
e.printStackTrace();
}finally{
if(fs!=null) {
try {
fs.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}
轉的。
http://wenku..com/view/c7b20053ad02de80d4d840f9.html

Ⅲ android中用viewflipper來放大量圖片時,內存溢出,求助

創建太多圖片而不注意回收容易導致內存溢出啊點陣圖很占內存的,而且占的好像是native內存建議創建圖片用弱引用包裝
或者
自己回收一下

Ⅳ android中使用bitmap時圖片過大,內存外溢怎麼解決

http://bbs.csdn.net/topics/390722227
這兒有比較好的說法,平時我直接compress方法里設置一下quality就ok了,0~100為壓縮質量

Ⅳ android 圖片佔用內存與什麼有關

在開發手機應用的時候,內存是有限的,那使用的時候,就要合理的運用和釋放。
那麼最佔用內存的,估計也是就圖片了,有時候,需要在載入一些大量的圖片。但是,往往回報內存溢出的錯誤。看看圖片的大小呢,也
不大,也就20KB左右,為什麼還是很占內存呢?
原來,將圖片轉成bitmap 來使用的時候,圖片所佔的內存,不是它原來的大小,是與 圖片的寬度,高度,和顏色深度有關系。
圖片實際佔用的內存大小 = width * height * 顏色深度
顏色深度:
Bitmap.Config ALPHA_8
Bitmap.Config ARGB_4444
Bitmap.Config ARGB_8888
Bitmap.Config RGB_565
A R G B
透明度 紅色 綠色 藍色
其實這都是色彩的存儲方法:我們知道ARGB指的是一種色彩模式,裡面A代表Alpha,R表示red,G表示green,B表示blue,其實所有的可
見色都是右紅綠藍組成的,所以紅綠藍又稱為三原色,每個原色都存儲著所表示顏色的信息值
Bitmap.Config ARGB_4444 每個像素 佔四位
Bitmap.Config ARGB_8888 32 每個像素 佔八位
Bitmap.Config RGB_565 16 R佔5位 R佔6位 B佔5位 沒有透明度(A)
說白了就ALPHA_8就是Alpha由8位組成
ARGB_4444就是由4個4位組成即16位,
ARGB_8888就是由4個8位組成即32位,
RGB_565就是R為5位,G為6位,B為5位共16位
由此可見:
ALPHA_8 代表8位Alpha點陣圖
ARGB_4444 代表16位ARGB點陣圖
ARGB_8888 代表32位ARGB點陣圖
eg: 一張20KB的圖片,寬1024(px)*高1024(px)*圖片的顏色模式,就是它所佔的真實的內存。

Ⅵ android如何載入超大解析度圖片

因為你要求圖片不能縮放,不能降低質量,而且有7M,oom是必須的,所以你能做的只能是載入你看得見的地方,意思就是說剪裁著看,先不載入,按屏幕的解析度的1.5倍或多一些進行剪裁(這個度自己控制項),當向某一個方向滑時,檢測坐標如果快超出時,載入右邊的下一幅。
這個有點類似於游戲中的地圖貼圖,也是分塊的。

Ⅶ Android 載入大量圖片時內存不夠用 ,

推薦使用github上的開源項目:universal-image-loader
非常強大,很好用

Ⅷ android 圖片佔用內存大小怎麼計算

1、將圖片轉化為縮略圖再載入: 代碼如下 1 BitmapFactory.Options options = new BitmapFactory.Options(); 2 options.inSampleSize = 2; 3 Bitmap img = BitmapFactory.decodeFile("/sdcard/1.png", options); 該段代碼即是讀取1.png的縮略圖,長度、寬度都只有原圖片的1/2。圖片大小減少,佔用的內存自然也變小了。這么做的弊端是圖片質量變差,inSampleSize的值越大,圖片的質量就越差。由於各手機廠商縮放圖片的演算法不同,在不同手機上的縮放圖片質量可能會不同。筆者就遭遇過moto手機上圖片縮放後質量可以接受,三星手機上同樣的縮放比例,質量卻差很多的情況。 2、用ARBG_4444顏色模式載入圖片: Android中有四種,分別是: ALPHA_8:每個像素佔用1byte內存 ARGB_4444:每個像素佔用2byte內存 ARGB_8888:每個像素佔用4byte內存 RGB_565:每個像素佔用2byte內存 Android默認的顏色模式為ARGB_8888,這個顏色模式色彩最細膩,顯示質量最高。但同樣的,佔用的內存也最大。 代碼如下 1 BitmapFactory.Options options = new BitmapFactory.Options(); 2 options.inPreferredConfig = Bitmap.Config.ARGB_4444; 3 Bitmap img = BitmapFactory.decodeFile("/sdcard/1.png", options); 以上代碼即是將1.png以ARGB_4444模式讀出。內存減少雖然不如第一種方法明顯,但是對於大多數圖片,看不出與ARGB_8888模式有什麼差別。不過在讀取有漸變效果的圖片時,可能有顏色條出現。另外,會影響圖片的特效處理。 3、調用圖片的recycle()方法: 這個其實不是真正降低圖片內存的方法。主要目的是標記圖片對象,方便回收圖片對象的本地數據。圖片對象的本地數據佔用的內存最大,而且與程序Java部分的內存是分開計算的。所以經常出現Java heap足夠使用,而圖片發生OutOfMemoryError的情況。在圖片不使用時調用該方法,可以有效降低圖片本地數據的峰值,從而減少OutOfMemoryError的概率。不過調用了recycle()的圖片對象處於“廢棄”狀態,調用時會造成程序錯誤。所以在無法保證該圖片對象絕對不會被再次調用的情況下,不建議使用該方法。特別要注意已經用setImageBitmap(Bitmap img)方法分配給控制項的圖片對象,可能會被系統類庫調用,造成程序錯誤。 4、使用Matrix對象放大的圖片如何更改顏色模式: 雖然使用Matrix對象放大圖片,必定會耗費更多的內存,但有時候也不得不這樣做。放大後的圖片使用的ARGB_8888顏色模式,就算原圖片是ARGB_4444顏色模式也一樣,而且沒有辦法在放大時直接指定顏色模式。可以採用以下辦法更改圖片顏色模式。 代碼如下 Matrix matrix = new Matrix(); float newWidth = 200;//圖片放大後的寬度 float newHeight = 300;//圖片放大後的長度 matrix.postScale(newWidth / img.getWidth(), newHeight/ img.getHeight()); Bitmap img1 = Bitmap.createBitmap(img, 0, 0, img.getWidth(), img.getHeight(), matrix, true);//得到放大的圖片 img2 = img1.(Bitmap.Config.ARGB_4444, false);//得到ARGB_4444顏色模式的圖片 img = null; img1 = null; 這里比起原來的圖片額外生成了一個圖片對象img1。但是系統會自動回收img1,所以實際內存還是減少了。

Ⅸ Android如何解決因使用大量圖片而導致的內存泄露問題

Android分配給圖片但內存只有8M,所以當很多圖片使用但時候就設計到了內存泄漏問題,網上只是簡單但說了要recycle()一下,那是在使用Bitmap的時候,那麼如果使用圖片的時候沒有涉及到Bitmap呢?
下面的是一個程序,可以運行,但是如果圖片較多會出現內存泄漏,請問怎麼解決呢
我用的是ubuntu11.04運行出了這個問題,但是用手機測試以及windows沒有問題。不過因使用大量圖片引起的內存泄露的確是個問題,所以要解決它才能以防後患,希望各位高手能夠解答。
博客園的農民伯伯說是:寫一個全局的資源管理類,用Map和軟引用來保存這些圖片資源,而不是直接引用資源文件
但是還沒有理解,如果有可以解決的跟大家分享一下哈

Java代碼
package com.loulijun.imageswitcher;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

public class ImageSwitcherActivity extends Activity implements ViewFactory {
private ImageSwitcher is;
private Gallery gallery;
//圖片資源
private Integer[] thumbs = {
R.drawable.yuanyuan01,
R.drawable.yuanyuan02,
R.drawable.yuanyuan03,
R.drawable.yuanyuan04,
R.drawable.yuanyuan05,
R.drawable.yuanyuan06,
R.drawable.yuanyuan07,
R.drawable.yuanyuan08
};

private Integer[] imgIds = {
R.drawable.yuanyuan01,
R.drawable.yuanyuan02,
R.drawable.yuanyuan03,
R.drawable.yuanyuan04,
R.drawable.yuanyuan05,
R.drawable.yuanyuan06,
R.drawable.yuanyuan07,
R.drawable.yuanyuan08
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//設置為全屏模式
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);

is = (ImageSwitcher)findViewById(R.id.switcher);
is.setFactory(this);
//淡入淡出
is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));

gallery = (Gallery)findViewById(R.id.gallery);
gallery.setAdapter(new ImageAdapter(this));
gallery.setOnItemSelectedListener(new Gallery.OnItemSelectedListener()
{

public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
is.setImageResource(imgIds[arg2]);

}

public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub

}

});
}
public View makeView() {
ImageView i = new ImageView(this);
i.setBackgroundColor(0xFF000000);
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
i.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
return i;
}
public class ImageAdapter extends BaseAdapter
{
//重寫構造方法
private Context context;
public ImageAdapter(Context c)
{
context = c;
}

//返回圖片的個數
public int getCount() {
// TODO Auto-generated method stub
return thumbs.length;
}

public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}

public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv = new ImageView(context);
iv.setImageResource(thumbs[position]);
iv.setAdjustViewBounds(true);
iv.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

return iv;
}

}

}

Ⅹ 如何及時清理Android里WebView的內存,尤其是大量圖片的內存

試試騰訊手機管家
打開騰訊手機管家——清理加速
騰訊手機管家可以清理垃圾文件、緩存文件、軟體的殘余、和多餘的安裝包。
然後小火箭還可以清理加速內存喲
打開騰訊手機管家——懸浮窗——小火箭

閱讀全文

與android大圖片內存相關的資料

熱點內容
注冊伺服器地址指什麼 瀏覽:433
文本命令行 瀏覽:97
撲克牌睡眠解壓 瀏覽:192
rc4演算法流程圖 瀏覽:159
胡蘿卜解壓方法 瀏覽:35
掃描pdf格式軟體 瀏覽:876
程序員在銀行開賬戶 瀏覽:516
android資料庫下載 瀏覽:749
中午伺服器崩潰怎麼辦 瀏覽:425
產品經理和程序員待遇 瀏覽:442
解憂程序員免費閱讀 瀏覽:109
錄像免壓縮 瀏覽:508
總結所學過的簡便演算法 瀏覽:362
南昌哪些地方需要程序員 瀏覽:761
三台伺服器配置IP地址 瀏覽:175
如何用命令方塊連續對話 瀏覽:280
win7linux共享文件夾 瀏覽:304
命令符打開本地服務 瀏覽:601
android應用程序源碼 瀏覽:705
安卓開發工程師簡歷怎麼寫 瀏覽:63