導航:首頁 > 操作系統 > android快速載入圖片大小

android快速載入圖片大小

發布時間:2022-07-22 04:15:01

android 中圖片太大,導致載入特別慢怎麼辦

圖片不會太大,如果載入過慢或載入不出來可能是以下問題:
手機裝的軟體過多,儲存空間不足
網速過慢
手機本身配置落後
可以嘗試長按圖片,然後保存到手機,在相冊中查看

請採納,謝謝

⑵ Android圖片載入有什麼辦法能夠像網頁那樣,載入一張從上往下載入多少顯示多少

這個很正常呀, jpg格式的都是 從上往下 一點一點顯示的,這些圖象格式都是經過壓縮的圖象格式很適合網路傳播,所以這樣可以讓顯示的速度快,不至於讓朋友悶等很長時間.

⑶ android 開發:圖片可以載入多大的啊

默認情況下載入需要的內存超過8兆,應用就可能出現oom異常,網上有解決辦法的,一般就是縮小圖片的發展以適應屏幕。

⑷ 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中載入多大的圖片會崩潰的

1、如果崩潰,說明你的手機看圖程序有BUG
2、能載入多大的圖片,要看你有多少空閑內存
3、如果你是編程,首先要檢測系統可用空閑內存大小

⑹ android中如何動態修改ImageView中圖片的大小 比如說點擊該圖片後圖片能變大

使用點陣圖(Bitmap)再重新繪制遍

//原點陣圖

Bitmap btm1 = BitmapFactory.decodeResource(Main.this.getResources(), R.drawable.hh);

BitmapDrawable bd1=BitmapDrawable(btm1);

imageView.setBackgroundDrawable(bd1);

放大後 滑動時計算 圖片的邊是否在屏幕外,如果在屏幕外就可移動,比如 向上滑動,是想看圖片下面的部分,此時計算圖片的底邊是否在屏幕外,如果是,就可以向上移動圖片。

Scaletype的設置的方式包括:

1、在layout xml中定義android:scaleType="CENTER"

2、或在代碼中調用imageView.setScaleType(ImageView.ScaleType.CENTER);

(6)android快速載入圖片大小擴展閱讀:

根據位深度,可將點陣圖分為1、4、8、16、24及32點陣圖像等。每個像素使用的信息位數越多,可用的顏色就越多,顏色表現就越逼真,相應的數據量越大。

例如,位深度為 1 的像素點陣圖只有兩個可能的值(黑色和白色),所以又稱為二值點陣圖。位深度為 8 的圖像有 2^8(即 256)個可能的值。位深度為 8 的灰度模式圖像有 256 個可能的灰色值。

RGB圖像由三個顏色通道組成。8 位/通道的 RGB 圖像中的每個通道有 256 個可能的值,這意味著該圖像有 1600 萬個以上可能的顏色值。

有時將帶有 8 位/通道 (bpc) 的 RGB 圖像稱作 24 點陣圖像(8 位 x 3 通道 = 24 位數據/像素)。通常將使用24位RGB組合數據位表示的的點陣圖稱為真彩色點陣圖。

⑺ android圖片太大如何獲取圖片尺寸然後縮放

用這個方法吧
//載入需要操作的圖片,這里是一張圖片
bitmap
bitmaporg
=
bitmapfactory.decoderesource(getresources(),r.drawable.r);
//獲取這個圖片的寬和高
int
width
=
bitmaporg.getwidth();
int
height
=
bitmaporg.getheight();
//定義預轉換成的圖片的寬度和高度
int
newwidth
=
200;
int
newheight
=
200;
//計算縮放率,新尺寸除原始尺寸
float
scalewidth
=
((float)
newwidth)
/
width;
float
scaleheight
=
((float)
newheight)
/
height;
//
創建操作圖片用的matrix對象
matrix
matrix
=
new
matrix();
//
縮放圖片動作
matrix.postscale(scalewidth,
scaleheight);

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

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

⑼ 在android開發中載入的圖片太大,有好幾十兆,應該怎麼辦

如果圖片太大會造成OOM內存溢出的錯誤,需要用Bitmap的壓縮機制。
解決方案:
1.使用BitmapFactory.decodeStream替代createBitmap方法
原因是該方法直讀取圖片位元組,調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap。

2.使用壓縮讀取技術
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imageSdUri, options);
final int height = options.outHeight;
final int width = options.outWidth;
options.inSampleSize = 1;
int w = 320;
int h = 480;
h = w*height/width;//計算出寬高等比率
int a = options.outWidth/ w;
int b = options.outHeight / h;
options.inSampleSize = Math.max(a, b);
options.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(imageSdUri, options);

3.及時釋放Bitamp
Bitmap對象在不使用時,我們應該先調用recycle()釋放內存,然後才它設置為null.雖然recycle()從源碼上看,調用它應該能立即釋放Bitmap的主要內存,但是測試結果顯示它並沒能立即釋放內存。但是我它應該還是能大大的加速Bitmap的主要內存的釋放。

⑽ android怎麼獲取圖片的大小

1、控制大小和位置

/*
* 獲取對話框的窗口對象及參數對象以修改對話框的布局設置,
* 可以直接調用getWindow(),表示獲得這個Activity的Window
* 對象,這樣這可以以同樣的方式改變這個Activity的屬性.
*/
Window dialogWindow = dialog.getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP);

/*
* lp.x與lp.y表示相對於原始位置的偏移.
* 當參數值包含Gravity.LEFT時,對話框出現在左邊,所以lp.x就表示相對左邊的偏移,負值忽略.
* 當參數值包含Gravity.RIGHT時,對話框出現在右邊,所以lp.x就表示相對右邊的偏移,負值忽略.
* 當參數值包含Gravity.TOP時,對話框出現在上邊,所以lp.y就表示相對上邊的偏移,負值忽略.
* 當參數值包含Gravity.BOTTOM時,對話框出現在下邊,所以lp.y就表示相對下邊的偏移,負值忽略.
* 當參數值包含Gravity.CENTER_HORIZONTAL時
* ,對話框水平居中,所以lp.x就表示在水平居中的位置移動lp.x像素,正值向右移動,負值向左移動.
* 當參數值包含Gravity.CENTER_VERTICAL時
* ,對話框垂直居中,所以lp.y就表示在垂直居中的位置移動lp.y像素,正值向右移動,負值向左移動.
* gravity的默認值為Gravity.CENTER,即Gravity.CENTER_HORIZONTAL |
* Gravity.CENTER_VERTICAL.
*
* 本來setGravity的參數值為Gravity.LEFT | Gravity.TOP時對話框應出現在程序的左上角,但在
* 我手機上測試時發現距左邊與上邊都有一小段距離,而且垂直坐標把程序標題欄也計算在內了,
* Gravity.LEFT, Gravity.TOP, Gravity.BOTTOM與Gravity.RIGHT都是如此,據邊界有一小段距離
*/
lp.x = 100; // 新位置X坐標
lp.y = 100; // 新位置Y坐標
lp.width = 300; // 寬度
lp.height = 300; // 高度
lp.alpha = 0.7f; // 透明度

// 當Window的Attributes改變時系統會調用此函數,可以直接調用以應用上面對窗口參數的更改,也可以用setAttributes
// dialog.onWindowAttributesChanged(lp);
dialogWindow.setAttributes(lp);

/*
* 將對話框的大小按屏幕大小的百分比設置
*/
// WindowManager m = getWindowManager();
// Display d = m.getDefaultDisplay(); // 獲取屏幕寬、高用
// WindowManager.LayoutParams p = getWindow().getAttributes(); // 獲取對話框當前的參數值
// p.height = (int) (d.getHeight() * 0.6); // 高度設置為屏幕的0.6
// p.width = (int) (d.getWidth() * 0.65); // 寬度設置為屏幕的0.95
// dialogWindow.setAttributes(p);

閱讀全文

與android快速載入圖片大小相關的資料

熱點內容
電腦怎麼找到雲伺服器 瀏覽:871
微信怎麼發應用app 瀏覽:776
花生殼dns伺服器地址 瀏覽:648
squad伺服器一般什麼時候人多 瀏覽:479
程序員戰門課 瀏覽:474
config保存伺服器地址 瀏覽:317
預訂網吧座位的app叫什麼 瀏覽:416
香港伺服器主機地址 瀏覽:640
網店美工pdf 瀏覽:447
一堆文件夾怎麼弄出來 瀏覽:743
博途如何編譯硬體 瀏覽:418
fortran程序pdf 瀏覽:504
電池消耗演算法 瀏覽:394
伺服器中斷連接怎麼處理 瀏覽:222
上世紀互聯網不發達程序員很難 瀏覽:841
語音識別android開源 瀏覽:762
地埋式垃圾壓縮中轉站 瀏覽:902
apachehttpdlinux 瀏覽:944
快遞員中通app預付款是什麼 瀏覽:843
java路徑轉義 瀏覽:857