Android拍照后Bitmap内存溢出的解决办法

在安卓中拍照显示图片到指定的ImageView时候经常会使用Bitmap,但是Bitmap如果不及时回收会导致内存溢出的问题,所以在适合的时机回收bitmap很重要。否则拍了几张照片之后就会导致程序崩溃而欲哭无泪了。
package com.example.Utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Environment;

public class SaveImage {
	private Bitmap bitmap;
	private String FileName;
	private String StorageDirectoryName;
	//安检图片路径
	private String imagePath;
	
	
	
	public SaveImage(Bitmap bitmap, String fileName, String storageDirectoryName) {
		this.bitmap = bitmap;
		FileName = fileName;
		StorageDirectoryName = storageDirectoryName;
		
		
		File tmpDir = new File(Environment.getExternalStorageDirectory()
				+ "/"+StorageDirectoryName);
		if (!tmpDir.exists()) {
			tmpDir.mkdir();
		}
		String photo_name1 = FileName + System.currentTimeMillis() + ".png";
		imagePath = tmpDir.getAbsolutePath() + "/" + photo_name1;
	}
	
	
	public String getImagePath(){
		return  imagePath;
	}


	public Uri SaveBitmap() {

		File img = new File(imagePath);
		try {
			FileOutputStream fos = new FileOutputStream(img);
			bitmap.compress(Bitmap.CompressFormat.PNG, 85, fos);
			fos.flush();
			fos.close();
			return Uri.fromFile(img);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return null;
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}finally{
			bitmap.recycle();
		}
	}

}


上面这段程序就是拍照之后将图片保存到指定的文件目录下,<span style="font-family: Arial, Helvetica, sans-serif;">StorageDirectoryName为文件根目录,</span><span style="font-family: Arial, Helvetica, sans-serif;">FileName为图片名称,将拍的的照片保存起来便于以后操作。</span>
<span style="font-family: Arial, Helvetica, sans-serif;">SaveBitmap方法之后返回图片的URI,最后调用</span>
<span style="font-family: Arial, Helvetica, sans-serif;">f</span><span style="font-family: Arial, Helvetica, sans-serif;">inally{</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre">			</span>bitmap.recycle();
<span style="white-space:pre">		</span>}</span>
<span style="font-family: Arial, Helvetica, sans-serif;">将bitmap回收,这样无论拍多少次都不会导致bitmap的内存溢出问题。然后imageview.setImageUri方法就可以设置拍下来的图片了。</span>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值