您的位置:首页 > 移动开发 > Android开发

Android中Bitmap格式压缩存储

2015-07-27 14:22 447 查看
压缩图片,就是把大图片压缩小,降低图片的质量,在一定范围内,降低图片的大小,并且满足需求(图片仍就清晰)。
从图片路径中读取图片(图片很大,不能全部加在到内存中处理,要是全部加载到内存中会内存溢出),我们可以以压缩的方式保存图片到手机。


public class FileUtils {
private static String mSdRootPath = null;//sd卡的根目录
private static String mDataRootPath = null;//手机的缓存根目录
private final static String FOLDER_NAME = "/AndroidImage";//保存Image的目录名

public FileUtils(Context context) {
mDataRootPath = context.getCacheDir().getPath();
mSdRootPath = Environment.getExternalStorageDirectory().getPath();
}

/**
* 获取储存Image的目录

* @return String
*/
private String getStorageDirectory() {
return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ?
mSdRootPath + FOLDER_NAME : mDataRootPath + FOLDER_NAME;
}

/**
* 保存Image的方法,有sd卡存储到sd卡,没有就存储到手机目录
* @param fileName
* @param bitmap
* @throws IOException
*/
public void saveBitmap(String fileName, Bitmap bitmap) throws IOException {
if (bitmap == null) {
return;
}
String path = getStorageDirectory();
File folderFile = new File(path);
if (!folderFile.exists()) {
folderFile.mkdir();
}
File file = new File(path + File.separator + fileName);
file.createNewFile();//判断文件是否存在,如果不存在则调用createNewFile()方法创建新目录
FileOutputStream fos = new FileOutputStream(file);
//把位图的压缩信息写入到一个指定的输出流中
//第一个参数format为压缩的格式
//第二个参数quality为图像压缩比的值,0-100.0 意味着小尺寸压缩,100意味着高质量压缩
//第三个参数stream为输出流
bitmap.compress(CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
}

/**
* 从手机或者sd卡获取Bitmap
* @param fileName
* @return Bitmap
*/
public Bitmap getBitmap(String fileName) {
return BitmapFactory.decodeFile(getStorageDirectory() + File.separator + fileName);
}
/**
* 获取文件的大小
* @param fileName
* @return long
*/
public long getFileSize(String fileName) {
return new File(getStorageDirectory() + File.separator + fileName).length();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: