在安卓开发中,我们经常要调用相册或摄像头拍照。比如上传头像的时候,几乎所有的APP都有上传头像这一功能,所以这也是一个常见的简单的功能。我在这里做一个简单的介绍。

/*** 在相册中选取*/protected void gallery() {Intent intent = new Intent(Intent.ACTION_PICK);intent.setType("image/*");startActivityForResult(intent, PHOTO_REQUEST_GALLERY);}/*** 拍照*/protected void openCamera() {Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 判断存储卡是否可以用,可用进行存储if (hasSdcard()) {camera.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(Environment.getExternalStorageDirectory(), PHOTO_FILE_NAME)));}startActivityForResult(camera, PHOTO_REQUEST_CAMERA);}/*** 判断是否有内存卡* * @return*/private boolean hasSdcard() {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {return true;} else {return false;}}/*** 裁剪图片* * @param uri*/private void crop(Uri uri) {// 裁剪图片意图Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");intent.putExtra("crop", "true");// 裁剪框的比例,1:1intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);// 裁剪后输入图片的尺寸大小intent.putExtra("outputX", 250);intent.putExtra("outputY", 250);// 图片格式intent.putExtra("outputFormat", "JPEG");intent.putExtra("noFaceDetection", true);// 取消人脸识别intent.putExtra("return-data", true);// true:不返回u<span style="font-family: Arial, Helvetica, sans-serif;">ri,false:返回uri</span>startActivityForResult(intent, PHOTO_REQUEST_CUT);}

裁剪后得到一个图片的bitmap,然后要在onActivityResult中找到相应的控件用setImageBitmap配置上:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);//拍照case PHOTO_REQUEST_CAMERA:if (hasSdcard()) {tempFile = new File(Environment.getExternalStorageDirectory(),PHOTO_FILE_NAME);crop(Uri.fromFile(tempFile));} else {ToastUtil.showToast(this, "未找到存储卡,无法存储照片!");}break;//从相册选取case PHOTO_REQUEST_GALLERY:if (data != null) {// 得到图片的全路径Uri uri = data.getData();crop(uri);}break;//裁剪case PHOTO_REQUEST_CUT:try {if (data != null) {photo = data.getParcelableExtra("data");//设置图片setItemPic();//iv_headpic_add.setImageBitmap(photo);// boolean delete = tempFile.delete();} else {return;}} catch (Exception e) {e.printStackTrace();}break;default:break;}

好了,以上就是调用手机相册、摄像头拍照及剪裁照片的代码。其实谷歌已经封装的很好了,感谢谷歌,感谢安卓!

版权所有,转载请注明出处!

Android 调用手机相册、摄像头拍照及剪裁照片相关推荐

  1. Android 调用手机系统照相机拍照

    Android 调用手机系统照相机拍照 并用ImageView显示    此方法获得的是拍照的原图片而非缩略图. 1.首先是布局文件activity_main.xml <RelativeLayo ...

  2. Android调用系统相册、拍照以及裁剪最简单的实现(兼容7.0)

    这里我只实现功能,具体Android 7.0 的一些细节参考 http://blog.csdn.net/lmj623565791/article/details/72859156 具体步骤: 一.在清 ...

  3. php实现调用手机相册,Android实现调用系统相册和拍照的Demo示例

    本文讲述了Android实现调用系统相册和拍照的Demo示例.分享给大家供大家参考,具体如下: 最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有 ...

  4. Android 调用相机APP获取拍照图片和从相册选择图片

    源码部分分析 Camera.java → 点我定位,注意研究1134行与2023行的两个方法. 通过源码可以发现,输出的图片有2个分支 如果你没有指定Intent里面的Extra参数,它就返回一个序列 ...

  5. vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式

    PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template><div><!--开启摄像头 ...

  6. 利用摄像头拍照并保存照片的程序(python实现,含UI界面)

    摘要:许多情况下我们需要用到摄像头获取图像,进而处理图像,这篇博文介绍利用pyqt5.OpenCV实现用电脑上连接的摄像头拍照并保存照片.为了使用和后续开发方便,这里利用pyqt5设计了个相机界面,后 ...

  7. java 调用手机相册_微信公众号调用手机摄像头拍照和本地相册

    [实例简介] 微信公众号调用手机摄像头拍照和本地相册,上传服务器 [实例截图] [核心代码] 微信公众号调用手机摄像头拍照和本地相册(2) └── 微信公众号调用手机摄像头拍照和本地相册 └── 微信 ...

  8. HTML5调用手机前置摄像头或后置摄像头拍照,canvas显示,经过Android测试

    为什么80%的码农都做不了架构师?>>>    但是navigator.getUserMediau已经从 Web 标准中删除,虽然部分浏览器可以使用,生产环境中还是要做好兼容.新的A ...

  9. html5 android6.0摄像头,HTML5调用手机前置摄像头或后置摄像头拍照,canvas显示,经过Android测试...

    但是navigator.getUserMediau已经从 Web 标准中删除,虽然部分浏览器可以使用,生产环境中还是要做好兼容.新的API更替为MediaDevices.getUserMedia.Me ...

  10. 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码

    接着昨天的需求,不过这次不依赖微信,使用纯js唤醒手机本地摄像头或者选择手机相册图片,识别其中的二维码或者是条形码.昨天,我使用微信扫一扫识别,效果超棒的.不过如果依赖微信的话,又怎么实现呢,这里介绍 ...

最新文章

  1. SynchronizedMap和ConcurrentHashMap有什么区别
  2. Python读取.set文件和.locs文件
  3. 第一部分:基础知识(第一章)屏幕部分续
  4. 【体验】TLD5098EL英飞凌恒流电源开发板,恒定电流源LED驱动板
  5. 首次公开!菜鸟弹性调度系统的架构设计
  6. mysql视图执行原理_MySql中的视图 触发器 存储过程,以及事物
  7. php5.4 mcrypt.so,PHP安装mcrypt.so报错 mcrypt.h not found 的解决方法
  8. 【唐宇迪】opencv实战学习
  9. 极限学习机(Extreme Learning Machine,ELM)详解
  10. 《数字图像处理 第三版》(冈萨雷斯)——第九章 形态学图像处理
  11. 区块链+人工智能+大数据等技术能否让我们构建三体文明
  12. 二级分类 php 两张表,PHP_php smarty 二级分类代码和模版循环例子,二级分类的数据表结构如下: - phpStudy...
  13. VS2017 如何连接mysql数据库依赖的驱动msi
  14. 二分网络上的电影推荐
  15. Applier编译安装
  16. OpenStreetMap在线地图数据下载(全)
  17. 浙江工贸学院计算机属于什么院系,浙江工贸职业技术学院有哪些专业和院系、什么专业比较好...
  18. 移动平台3G手机网站前端开发布局技巧汇总
  19. ACM竞赛需要的基础知识
  20. Prefab资源和Random类 .

热门文章

  1. javascript方法和技巧大全1 (轉)
  2. python 卡方分布值_数据分析|抽样分布
  3. linux开源游戏_适用于Linux的5个开源策略和模拟游戏
  4. 解决 required a bean of type ‘com.aliyun.oss.OSSClient‘ that could not be found
  5. 遭遇XP-664129A8.EXE
  6. Android使用百度大脑EasyDL识别交通标志物
  7. Matlab 直方图均衡化
  8. 致远OA漏洞学习——A6版本Session泄漏伪造漏洞
  9. 游戏开发物理引擎PhysX研究系列:通过Unity中的物理系统学习Physx指引贴
  10. 思考力——提升企业竞争力的核心因素