1.设置要保存图片的路径的方法
private String getPhotopath(int type) {
// 照片全路径
String fileName = "";
// 文件夹路径
String pathUrl = Environment.getExternalStorageDirectory()+"/myimage/";
String imageName = "imageFull.jpg";
File file = new File(pathUrl);
file.mkdirs();// 创建文件夹
fileName = pathUrl + imageName;
return fileName;
}
2.打开相机拍照并保存到指定路径的方法
Intent intentPhote = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intentPhote.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
File out = new File(getPhotopath(1));
Uri uri = Uri.fromFile(out);
// 获取拍照后未压缩的原图片,并保存在uri路径中
intentPhote.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intentPhote, TAKE_PHOTO);
private Bitmap getBitmapFromUrl(String url, double width, double height) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; // 设置了此属性一定要记得将值设置为false
Bitmap bitmap = BitmapFactory.decodeFile(url);
// 防止OOM发生
options.inJustDecodeBounds = false;
int mWidth = bitmap.getWidth();
int mHeight = bitmap.getHeight();
Matrix matrix = new Matrix();
float scaleWidth = 1;
float scaleHeight = 1;
// 按照固定宽高进行缩放
if(mWidth <= mHeight) {
scaleWidth = (float) (width/mWidth);
scaleHeight = (float) (height/mHeight);
} else {
scaleWidth = (float) (height/mWidth);
scaleHeight = (float) (width/mHeight);
}
// 按照固定大小对图片进行缩放
matrix.postScale(scaleWidth, scaleHeight);
Bitmap newBitmap = Bitmap.createBitmap(bitmap, 0, 0, mWidth, mHeight, matrix, true);
// 用完了记得回收
bitmap.recycle();
return newBitmap;
}
4.取出相片并设置到ImageView上
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case TAKE_PHOTO:
if (resultCode == RESULT_OK) {
Bitmap bitmap = getBitmapFromUrl(getPhotopath(1), 800, 640);
mImage.setImageBitmap(bitmap);
}
break;
}
}