有时候我们需要为拍出的照片或者裁剪的图片指定保存路径。那么如何为图片创建保存路径呢?方法有两种:第一种是直接创建url或者file路径。第二种是创建Uri路径。
创建创建url或者file路径:
/**
* 制作图片的路径地址
* @param context
* @return
*/
public static String createPath(Context context){
String path = null;
File file = null;
long tag = System.currentTimeMillis();
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){//SDCard是否可用
//最好把images替换成你的项目名称,避免有重复文件夹
path = Environment.getExternalStorageDirectory() + File.separator +"images/";
file = new File(path);
if(!file.exists()){
file.mkdirs();
}
path = Environment.getExternalStorageDirectory() + File.separator +"images/"+ tag + ".png";
}else{
path = context.getFilesDir() + File.separator +"images/";
file = new File(path);
if(!file.exists()){
file.mkdirs();
}
path = context.getFilesDir() + File.separator +"images/"+ tag + ".png";
}
return path;
}
创建Uri路径:
/**
* 创建一条图片地址uri,用于保存拍照后的照片
*
* @param context
* @return 图片的uri
*/
private static Uri createImagePathUri(Context context) {
Uri imageFilePath = null;
String status = Environment.getExternalStorageState();
SimpleDateFormat timeFormatter = new SimpleDateFormat(
"yyyyMMdd_HHmmss", Locale.CHINA);
long time = System.currentTimeMillis();
String imageName = timeFormatter.format(new Date(time));
// ContentValues是我们希望这条记录被创建时包含的数据信息
ContentValues values = new ContentValues(3);
values.put(MediaStore.Images.Media.DISPLAY_NAME, imageName);
values.put(MediaStore.Images.Media.DATE_TAKEN, time);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpg");
if (status.equals(Environment.MEDIA_MOUNTED)) {// 判断是否有SD卡,优先使用SD卡存储,当没有SD卡时使用手机存储
imageFilePath = context.getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
} else {
imageFilePath = context.getContentResolver().insert(
MediaStore.Images.Media.INTERNAL_CONTENT_URI, values);
}
Log.i("", "生成的照片输出路径:" + imageFilePath.toString());
return imageFilePath;
}