调用系统拍照

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);


File myImageDir = new File(TEMP_TAKE_PHOTO_FILE_PATH);

//创建图片保存目录
if (!myImageDir.exists())
{
Mylog.d(THIS, "Create the path:" + TEMP_TAKE_PHOTO_FILE_PATH);
myImageDir.mkdirs();
}

//根据时间来命名
imagFile = File.createTempFile(""+System.currentTimeMillis(), ".jpg",myImageDir);

tmpuri = Uri.fromFile(imagFile);

i.putExtra(MediaStore.EXTRA_OUTPUT, tmpuri);


startActivityForResult(i, TAKE_PHOTO_REQUEST_CODE);


从图库选择图片

Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT); // "android.intent.action.GET_CONTENT"


innerIntent.setType("image/*"); // 查看类型


// StringIMAGE_UNSPECIFIED="image/*";详细的类型在com.google.android.mms.ContentType中


Intent wrapperIntent = Intent.createChooser(innerIntent, null);


act.startActivityForResult(wrapperIntent, SELECT_PHOTO_REQUEST_CODE);



返回后接收并调用系统裁剪工具

@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
if (requestCode == MediaHelper.TAKE_PHOTO_REQUEST_CODE || requestCode == MediaHelper.SELECT_PHOTO_REQUEST_CODE) {

if (resultCode == RESULT_OK ) {
Uri uri = null;
if(requestCode == MediaHelper.SELECT_PHOTO_REQUEST_CODE) {
uri = intent.getData();
}else if(requestCode == MediaHelper.TAKE_PHOTO_REQUEST_CODE) {
uri = MediaHelper.tmpuri;
}


if (uri != null) {

final Intent intent1 = new Intent("com.android.camera.action.CROP");
intent1.setDataAndType(uri, "image/*");
intent1.putExtra("crop", "true");
intent1.putExtra("aspectX", 1);
intent1.putExtra("aspectY", 1);
intent1.putExtra("outputX", 132);
intent1.putExtra("outputY", 132);
intent1.putExtra("return-data", true);
startActivityForResult(intent1, MediaHelper.CUT_PHOTO_REQUEST_CODE);

}
}

else if(requestCode == MediaHelper.CUT_PHOTO_REQUEST_CODE) {
if (resultCode == RESULT_OK && intent != null) {
bm= intent.getParcelableExtra("data");

}

}



}



在裁剪图片时,遇到有些图片不能按照某一指定的比例进行裁剪,查看了源码后才知道:系统的裁剪图片默认对图片进行人脸识别,当识别到有人脸时,会按aspectX和aspectY为1来处理,如果想设置成自定义的裁剪比例,需要设置noFaceDetection为true。

即iintent.putExtra("noFaceDetection", true); 取消人脸识别功能。


更多相关文章

  1. android中Intent的介绍和常见用法总结
  2. android8.1 系统应用使用FileProvider时提示没有权限
  3. Android(安卓)BitmapFactory用法总结
  4. Android使用post方式上传图片到服务器的方法
  5. Android(安卓)网易云音乐图片高斯模糊
  6. 基于32bit系统编译Android(安卓)2.3
  7. 个性缩放图片NinePatchDrawable
  8. Android(安卓)的系统属性(SystemProperties)设置分析
  9. android桌面快捷方式创建无标题文章

随机推荐

  1. 是否有缩放因子方法用于Android的多分辨
  2. 黑马程序员 Java中根据YYYY-MM-DD格式的
  3. 用java画跳棋棋盘
  4. 【Effective Java】条30:使用枚举代替int
  5. java中excel导出包括合并单元格和单元格
  6. java中jar包的使用
  7. 关于String、集合、数组的长度
  8. java后台对上传的图片进行压缩
  9. java的学习方法(转自黑马程序员)
  10. ArcGIS JS API For JavaScript实现类台风