android调用系统拍照程序和从图库选取图片,返回后调用系统裁剪工具

调用系统拍照

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);  取消人脸识别功能。

时间: 2024-11-01 19:57:18

android调用系统拍照程序和从图库选取图片,返回后调用系统裁剪工具的相关文章

解决通过Intent调用系统拍照程序,返回图片太小的问题[android]

  以下的代码可以调用系统的拍照程序, 1 2 Intent it = newIntent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(it, Activity.DEFAULT_KEYS_DIALER); 按下拍照键后,会返回到你的activity,所以你的activity要在onActivityResult方法里加一个处理, 1 2 3 4 5 6 7 8 9 10 11 12 13 protectedv

Android通过手机拍照或从本地相册选取图片设置头像

像微信.QQ.微博等社交类的APP,通常都有设置头像的功能,设置头像通常有两种方式: 1.让用户通过选择本地相册之类的图片库中已有的图像,裁剪后作为头像. 2.让用户启动手机的相机拍照,拍完照片后裁剪,然后作为头像. 我现在写一个简单的完整代码例子,说明如何在android中实现上述两个头像设置功能. MainActivity.Java文件: package zhangpgil.photo; import java.io.File; import android.support.v7.app.A

mysql数据库表中插入一行新纪录时,调用一个java程序

问题描述 mysql数据库表中插入一行新纪录时,想要通知调用一个java程序,在网上查了下,说可以使用触发器,监听数据表中的变化,但是触发器器能直接调用外部的java程序吗,如果可以,该怎么做.或者说除了触发器以外,有好的其他方法,有想过去轮训数据库,但经常访问数据库效率太差了,所以想看看有没有其他的实现方法 解决方案 解决方案二:oracle的应该可以,你参考一下这两个链接:mysql的即使能实现,估计也很难:解决方案三:引用1楼u012724379的回复: oracle的应该可以,你参考一下

调用android系统相机拍照然后在照片右下角显示经纬度和当前系统时间并且实现换行

问题描述 调用android系统相机拍照然后在照片右下角显示经纬度和当前系统时间并且实现换行 我用自己的手机不管是横拍还是竖拍文字都是在右下角并且换行了,用别的手机横拍 没有什么问题,竖拍就显示的不全在右边,怎么解决这个适配问题 解决方案 获取图片,用画布 画笔画上去 解决方案二: android调用系统相机拍照保存照片并显示在当前界面android--调用系统相机拍照,显示并保存照片 - zhengwenandroid 调用系统相机拍照的各种异常处理

代码-android调用系统拍照无返回值

问题描述 android调用系统拍照无返回值 我调用照相机拍照的代码是: cameraFile = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), DemoApplication.getInstance().getUserName() + System.currentTimeMillis() + ".jpg")); cameraFileString = cameraFile.getPath().toStr

Android使用Intent启动其他非系统应用程序的方法_Android

本文实例讲述了Android使用Intent启动其他非系统应用程序的方法.分享给大家供大家参考,具体如下: android应用程序内部通过Intent来实现Activity间的跳转.也知道通过Intent调用系统程序.但若想在应用程序A内开启应用程序B(前提是A.B均已安装),该如何去实现? 记录下实现过程. 在应用程序A内添加如下代码: Intent i = new Intent(); i.setClassName("com.example.a", "com.example

android-三星 note II 调用系统拍照获取到的照片是旋转的

问题描述 三星 note II 调用系统拍照获取到的照片是旋转的 拍完照好像旋转了,但到文件管理器中看到的图片并不是旋转的,这是怎么回事,难道还要手动旋转下? 解决方案 三星note2 android调用系统拍照空指针异常三星note2 android调用系统拍照空指针异常关于三星手机拍照 获取的照片旋转处理 解决方案二: 设置旋转为不旋转就可以了写死

android-Android 调用系统拍照如果截图太大有一瞬间的卡住,然后再跳到上传

问题描述 Android 调用系统拍照如果截图太大有一瞬间的卡住,然后再跳到上传 Android 调用系统拍照如果截图太大有一瞬间的卡住,然后再跳到上传 解决方案 http://bbs.csdn.net/topics/390657801 试试这个方法.. 解决方案二: 尽量不要卡UI......建议 解决方案三: 卡住应该是把图片转成流数据的过程,你把上传放到异步里面去

调用系统拍照,照片显示问题

问题描述 调用系统拍照,照片显示问题 调用系统拍照时怎么解决不同手机兼容问题??有些手机上拍照完成后,照片显示不出来... 解决方案 解决Android拍照保存在系统相册不显示的问题Android拍照后显示照片Android 拍照后显示照片---------------------- 解决方案二: 你可以拍照完成后,保存在本地,然后从本地读取图片,显示出来