1. 程式人生 > >BitmapFactory.decodeFile圖片過大記憶體溢位

BitmapFactory.decodeFile圖片過大記憶體溢位

/** 從快取中獲取圖片 **/
	public Bitmap getImage(final String url) {
		final String path = getDirectory() + "/" + convertUrlToFileName(url);
		System.out.println("path:"+path);
		File file = new File(path);
		if (file.exists()) {


			try {


				Bitmap bmp = BitmapFactory.decodeFile(path);
				if (bmp == null) {
					file.delete();
				} else {
					updateFileTime(path);
					return bmp;
				}
			} catch (OutOfMemoryError err) {
				BitmapFactory.Options opts = new BitmapFactory.Options();
				opts.inSampleSize = 4;
				Bitmap bmp = BitmapFactory.decodeFile(path, opts);
				if (bmp == null) {
					file.delete();
				} else {
					updateFileTime(path);
					return bmp;
				}
			}
		}
		return null;
	}
如果記憶體溢位,就對圖片進行壓縮,
opts.inSampleSize = 4;為壓縮4倍


相關推薦

BitmapFactory.decodeFile圖片記憶體溢位

/** 從快取中獲取圖片 **/ public Bitmap getImage(final String url) { final String path = getDirectory() + "/" + convertUrlToFileName(url); Sy

安卓載入圖片而導致OOM記憶體溢位的解決方法(巨坑....)

如果圖片太大會造成OOM記憶體溢位的錯誤,需要用Bitmap的壓縮機制。 如果跳轉的頁面含有圖片可能會導致跳轉失敗。 比如說我這裡是一旦觸發了某個按鍵,就修改該xml的圖片和文字說明 則setImageResource應該改成這樣imageview.setImageBitm

轉載 | 防止頁面圖片出現橫滾動條問題

縮小 overflow 剪切 ont tro src idt 圖片路徑 解決方法 - JS方法 - 就是一小段JS加到頁面中就可以,下面把這段代碼貼出來: 1 jQuery(document).ready(function () { 2 jQuery("bod

圖片時前端如何優化載入

一、 採用不減解析度的壓縮方式進行壓縮 用PS開啟圖片,點選點選“檔案”——“儲存為Web所用格式” 將圖片儲存為Web所用格式,點選“儲存”。 或者尋找第三方壓縮方式https://tinypng.com/ 二、將圖片改為jpeg漸進式圖片 上圖是標準型jpg格式的

深度學習圖片--------------實現將一張圖片裁剪成二圖片併合並

import os import cv2 import numpy as np import tqdm #cv2讀取一律寫成預設模式 #path = 'D:\\program\\fast-neural-style-tensorflow-master\\C\\pic\\' path = 'D:\\pr

C# 載入和傳遞圖片,導致記憶體溢位的問題

      由C#向C++裡面傳遞影象的過程中,多載入幾次影象後,記憶體會暴漲,主要有兩個原因: 一、pictureBox的清理不能用pictureBox.Image=null清除,而應該使用,pictureBox1.Image.Dispose()。 二、B

ThinkPHP--圖片導致的一系列問題

最近在上傳圖片並新增水印時,無意中發現圖片超過2M的都無法上傳,而且頁面不報錯,程式碼也沒法兒往下進行,經過多番查詢資料發現需要修改PHP的配置檔案即php.ini 1.在wamp\bin的資料夾下,把apache和php 裡的php.ini都進行修改,需要修改的引數如下: mem

圓形圖片CircleImageView(解決記憶體溢位)

一、前言 專案已經做完了,目前測試那邊還沒有提交什麼bug,所以目前對程式碼進行重構和優化。有一個很頭疼的問題就是圓形影象引起GC記憶體溢位,logcat老列印:Grow heap (frag case) to 20.982MB for 1542416-byt

android 圖片壓縮避免記憶體溢位的解決辦法

在android中的很多應用中都需要拍照上傳圖片,隨著手機的畫素越來越高,拍攝的圖片也越來越大。在拍攝後顯示的時候,使用universalimageloader.這個開源專案可以避免記憶體溢位。但是在上傳的時候,一般需要壓縮,但是壓縮的時候很容易導致記憶體溢位。解決的辦法就是,壓縮後的二進位制流,不用匯出B

圖片引起的OOM,ImageView無法顯示問題

最近處理圖片遇到一些問題,網上的圖片壓縮很多都是使用bitmap.compress(),但是發現還是有OOM原先的程式碼,有問題的:public String cutPictureQuality(Bitmap bitmap, String fname) {

Android 載入圖片過程導致記憶體溢位(Out Of Memory)

載入圖片的時候,啪啪啪就OOM了。 解決圖片OOM之前,先來了解一下一張圖片記憶體佔用的相關因素——圖片質量,圖片尺寸,填充區域 圖片質量 質量就是圖片大小(多少MB,多少KB)。相對情況下圖片越大,佔用記憶體越大 圖片尺寸 圖片尺寸=圖片的寬高,

UIWebview圖片,縮放至螢幕寬度

webview在手機上顯示的內容經常非常寬,顯示出來之後要手動縮放才能正常瀏覽。但如果用  C程式碼   [self.webView setScalesPageToFit:YES];   則會被居中縮放的非常小,如圖:(請無視我demo裡的title。。。)   其實

android上傳圖片處理

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOu

關於設定圖片時,記憶體溢位的解決方法

不知道大家在使用ImageView的setImageBitmap方法時,有沒有遇到過一旦給ImageView設定比較大的圖片,就會導致記憶體溢位這樣的問題。希望我所用的方法在一定程度上可以幫助大家~~ 廢話不多說,開始搞事情~~ /** * 通過圖片路徑讀取圖片並通過

Android(decode檔案轉成bitmap)使用BitmapFactory.Options解決載入圖片記憶體溢位

由於Android對圖片使用記憶體有限制,若是載入幾兆的大圖片便記憶體溢位。Bitmap會將圖片的所有畫素(即長x寬)載入到記憶體中,如果圖片解析度過大,會直接導致記憶體溢位(java.lang.OutOfMemoryError),只有在BitmapFactory載入

Android使用BitmapFactory.Options壓縮圖片解決載入圖片記憶體溢位

由於Android對圖片使用記憶體有限制,若是載入幾兆的大圖片便記憶體溢位。Bitmap會將圖片的所有畫素(即長x寬)載入到記憶體中,如果圖片解析度過大,會直接導致記憶體溢位(java.lang.OutOfMemoryError),只有在BitmapFactory載入圖片時使

android 本地圖片造成記憶體溢位的解決方案

在使用中,小的圖片,可以通過drawable直接引用setImageResource或者setBackgroundResource, 但涉及到大圖時,儘量通過decodeStream來建立bitmap,然後再給對應的view使用。 public static Bitmap readBitMap(

MySQL資料庫查詢結果解決記憶體溢位的解決方案

正常來說,一般是不會出現這種情況的,但也不能保證,偶爾有這種情況發生,解決方案如下: 1.使用分頁查詢語句。    因為分頁查詢每次只會查詢少量資料,所以不會佔用太多記憶體,而且資料量很大的時候,分頁

Android利用縮放載入圖片避免記憶體溢位

因為安卓的堆記憶體有限(儘管現在隨著安卓手機螢幕解析度的提高堆記憶體沒有以前小螢幕時代那麼侷限),要是完全載入一張大圖片很容易導致OOM(out of memory)的問題。 所以為了解決這一情況,我

IOS獲取圖片方法,避免記憶體閃退

建議使用該方法獲取圖片 NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"sun" ofType:@"png"]; UIImage *image = [[UIImage alloc] initWit