Android 调用手机相册、摄像头拍照及剪裁照片
在安卓开发中,我们经常要调用相册或摄像头拍照。比如上传头像的时候,几乎所有的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 调用手机相册、摄像头拍照及剪裁照片相关推荐
- Android 调用手机系统照相机拍照
Android 调用手机系统照相机拍照 并用ImageView显示 此方法获得的是拍照的原图片而非缩略图. 1.首先是布局文件activity_main.xml <RelativeLayo ...
- Android调用系统相册、拍照以及裁剪最简单的实现(兼容7.0)
这里我只实现功能,具体Android 7.0 的一些细节参考 http://blog.csdn.net/lmj623565791/article/details/72859156 具体步骤: 一.在清 ...
- php实现调用手机相册,Android实现调用系统相册和拍照的Demo示例
本文讲述了Android实现调用系统相册和拍照的Demo示例.分享给大家供大家参考,具体如下: 最近我在群里看到有好几个人在交流说现在网上的一些Android调用系统相册和拍照的demo都有bug,有 ...
- Android 调用相机APP获取拍照图片和从相册选择图片
源码部分分析 Camera.java → 点我定位,注意研究1134行与2023行的两个方法. 通过源码可以发现,输出的图片有2个分支 如果你没有指定Intent里面的Extra参数,它就返回一个序列 ...
- vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式
PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template><div><!--开启摄像头 ...
- 利用摄像头拍照并保存照片的程序(python实现,含UI界面)
摘要:许多情况下我们需要用到摄像头获取图像,进而处理图像,这篇博文介绍利用pyqt5.OpenCV实现用电脑上连接的摄像头拍照并保存照片.为了使用和后续开发方便,这里利用pyqt5设计了个相机界面,后 ...
- java 调用手机相册_微信公众号调用手机摄像头拍照和本地相册
[实例简介] 微信公众号调用手机摄像头拍照和本地相册,上传服务器 [实例截图] [核心代码] 微信公众号调用手机摄像头拍照和本地相册(2) └── 微信公众号调用手机摄像头拍照和本地相册 └── 微信 ...
- HTML5调用手机前置摄像头或后置摄像头拍照,canvas显示,经过Android测试
为什么80%的码农都做不了架构师?>>> 但是navigator.getUserMediau已经从 Web 标准中删除,虽然部分浏览器可以使用,生产环境中还是要做好兼容.新的A ...
- html5 android6.0摄像头,HTML5调用手机前置摄像头或后置摄像头拍照,canvas显示,经过Android测试...
但是navigator.getUserMediau已经从 Web 标准中删除,虽然部分浏览器可以使用,生产环境中还是要做好兼容.新的API更替为MediaDevices.getUserMedia.Me ...
- 使用JS调用手机本地摄像头或者相册图片识别二维码/条形码
接着昨天的需求,不过这次不依赖微信,使用纯js唤醒手机本地摄像头或者选择手机相册图片,识别其中的二维码或者是条形码.昨天,我使用微信扫一扫识别,效果超棒的.不过如果依赖微信的话,又怎么实现呢,这里介绍 ...
最新文章
- SynchronizedMap和ConcurrentHashMap有什么区别
- Python读取.set文件和.locs文件
- 第一部分:基础知识(第一章)屏幕部分续
- 【体验】TLD5098EL英飞凌恒流电源开发板,恒定电流源LED驱动板
- 首次公开!菜鸟弹性调度系统的架构设计
- mysql视图执行原理_MySql中的视图 触发器 存储过程,以及事物
- php5.4 mcrypt.so,PHP安装mcrypt.so报错 mcrypt.h not found 的解决方法
- 【唐宇迪】opencv实战学习
- 极限学习机(Extreme Learning Machine,ELM)详解
- 《数字图像处理 第三版》(冈萨雷斯)——第九章 形态学图像处理
- 区块链+人工智能+大数据等技术能否让我们构建三体文明
- 二级分类 php 两张表,PHP_php smarty 二级分类代码和模版循环例子,二级分类的数据表结构如下: - phpStudy...
- VS2017 如何连接mysql数据库依赖的驱动msi
- 二分网络上的电影推荐
- Applier编译安装
- OpenStreetMap在线地图数据下载(全)
- 浙江工贸学院计算机属于什么院系,浙江工贸职业技术学院有哪些专业和院系、什么专业比较好...
- 移动平台3G手机网站前端开发布局技巧汇总
- ACM竞赛需要的基础知识
- Prefab资源和Random类 .
热门文章
- javascript方法和技巧大全1 (轉)
- python 卡方分布值_数据分析|抽样分布
- linux开源游戏_适用于Linux的5个开源策略和模拟游戏
- 解决 required a bean of type ‘com.aliyun.oss.OSSClient‘ that could not be found
- 遭遇XP-664129A8.EXE
- Android使用百度大脑EasyDL识别交通标志物
- Matlab 直方图均衡化
- 致远OA漏洞学习——A6版本Session泄漏伪造漏洞
- 游戏开发物理引擎PhysX研究系列:通过Unity中的物理系统学习Physx指引贴
- 思考力——提升企业竞争力的核心因素