Android 使用CameraX拍照,自动对焦,以及证件照剪切
想看更多算法题,可以扫描上方二维码关注我微信公众号“数据结构和算法”,截止到目前我已经在公众号中更新了500多道算法题,其中部分已经整理成了pdf文档,截止到目前总共有800多页(并且还会不断的增加),可以在公众号中回复关键字“pdf”即可下载。
在Android中拍照最初使用的是Camera,现在基本上已经被废弃了,然后就是Camera2,这个使用更灵活,但有一点复杂,然后就是CameraX了,这个使用起来更方便。我们先来看一下演示效果
他可以使用前置或者后置摄像头拍照,自动对焦,也可以实现证件照并实现剪切
使用方式
在根目录的buid.gradle文件中添加
allprojects {repositories {...maven { url 'https://jitpack.io' }}}
然后在使用的module的buid.gradle中添加
implementation 'com.github.sdwwld:CameraX:1.1.5'
使用方式很简单,几行代码即可
new CameraParam.Builder().setActivity(this).build();
当然如果不能满足你的需求,还可以修改更多的属性
String cameraPath = Environment.getExternalStorageDirectory().getPath() + File.separator + "DCIM" + File.separator + "Camera";File cameraFolder = new File(cameraPath);if (!cameraFolder.exists()) {cameraFolder.mkdirs();}SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");CameraParam mCameraParam =new CameraParam.Builder().setActivity(this)//!!!参数必须要有.setFront(false)//是否是前置摄像头,true是前置摄像头,false是后置摄像头.setShowMask(true)//是否显示裁剪区,如果显示,图片会进行裁剪.setShowSwitch(true)//是否显示摄像头切换按钮,如果显示,可以点击切换前后摄像头.setSwitchLeft(Tools.dp2px(this, 40))//摄像头切换按钮到屏幕左边的距离.setSwitchTop(Tools.dp2px(this, 40))//摄像头切换按钮到屏幕上边的距离.setSwitchSize(Tools.dp2px(this, 40))//摄像头切换按钮的大小(宽高一样,是正方形的).setBackText("返回")//下面返回键显示的文字.setBackColor(Color.WHITE)//下面返回键的颜色.setBackSize(16)//下面返回键的尺寸.setBackLeft(Tools.dp2px(this, 10))//返回键到屏幕左边的距离.setTakePhotoSize(Tools.dp2px(this, 60))//拍照按钮的大小(还有拍照完之后显示的保存和放弃保存的按钮,这3个按钮的大小是一样的).setMaskMarginLeftAndRight(Tools.dp2px(this, 20))//如果显示裁剪框,裁剪框左右两边倒屏幕的距离.setMaskMarginTop(Tools.dp2px(this, 120))如果显示裁剪框,裁剪框到屏幕上边的距离.setMaskRatioW(8)//下面一行和当前行表示的是裁剪框的宽高比.setMaskRatioH(5).setResultBottom(Tools.dp2px(this, 60))//拍照按钮到屏幕下边的距离(还有拍照完之后显示的保存和放弃保存的按钮).setResultLeftAndRight(Tools.dp2px(this, 60))//拍照完之后显示的保存和放弃保存的按钮到左边和右边的距离.setSwitchImgId(R.drawable.ic_switch)//切换摄像头的按钮.setMaskImgId(R.drawable.bg_bankcard)//剪切框.setSaveImgId(R.mipmap.success)//拍照成功之后的保存按钮.setCancelImgId(R.mipmap.failed)//拍照成功之后的放弃按钮.setTakePhotoImgId(R.mipmap.take_button)//拍照按钮.setPicturePath(cameraFolder.getAbsolutePath() + File.separator + "IMG_" + simpleDateFormat.format(new Date()) + ".jpg")//拍照保存的路径.setShowFocusTips(true)//点击屏幕聚焦成功的时候是否需要提示.setFocusFailTips("聚焦失败")//聚焦失败的提示.setFocusSuccessTips("聚焦成功")//聚焦成功的提示.setFocusViewTime(3)//聚焦的时间,是秒.setFocusViewColor(ContextCompat.getColor(this, R.color.blue))//聚焦框的颜色.setFocusViewSize(Tools.dp2px(this, 60))//聚焦框的大小(正方形的).setCornerViewSize(Tools.dp2px(this, 12))//聚焦框的圆角大小.setFocusViewStrokeSize(Tools.dp2px(this, 2))//聚焦框线条宽度.setRequestCode(CameraConstant.REQUEST_CODE)//请求码.build();//第一个参数是必须要有的,后面的参数不是必须的,如果想获取默认参数可以像下面这样Log.d("wld______", mCameraParam.getPicturePath());
至于文件的获取路径可以使用下面的方式
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);//requestCode默认是CameraConstant.REQUEST_CODE ,当然也可以在上面的CameraParam创建的时候//调用setRequestCode修改if (requestCode == CameraConstant.REQUEST_CODE && resultCode == RESULT_OK) {//获取图片路径String picturePath = data.getStringExtra(CameraConstant.PICTURE_PATH_KEY);//显示出来img_picture.setVisibility(View.VISIBLE);img_picture.setImageBitmap(BitmapFactory.decodeFile(picturePath));}}
具体项目demo可以到github上下载。
Android 使用CameraX拍照,自动对焦,以及证件照剪切相关推荐
- Android 使用CameraX拍照、预览
参考:https://blog.csdn.net/qq_17441227/article/details/119874979
- Android 使用CameraX实现预览/拍照/录制视频/图片分析/对焦/缩放/切换摄像头等操作
1. CameraX架构 看官方文档 CameraX架构 有如下这一段话 使用CameraX,借助名为"用例"的抽象概念与设备的相机进行交互. 预览 : 接受用于显示预览的Surf ...
- android opencv 数码变焦,Android开发(53) 摄像头自动对焦。在OpenCV图像识别中连续拍照时自动对焦和拍照。......
概述 对焦,这里所说的"焦"是指"焦距".在拍照时,一定是需要调焦的.一般会在目标位置最清晰的时候会停止对焦.最近在处理OpenCV进行图像识别时,需要连续的调 ...
- android自动对焦第一次对焦,Android自定义相机实现自动对焦和手动对焦
Android自定义相机实现自动对焦和手动对焦: 不调用系统相机,因为不同的机器打开相机呈现的界面不统一也不能满足需求. 所以为了让程序在不同的机器上呈现出统一的界面,并且可以根据需求进行布局,做了此 ...
- android 静默拍照功能,Android实现静默拍照功能
本文实例为大家分享了Android实现静默拍照功能的具体代码,供大家参考,具体内容如下 1.申请权限(6.0以后要动态申请) 2.创建相机工具类 CameraPreview: public class ...
- Android 使用 CameraX 快速实现仿微信短视频录制
Android 使用 CameraX 快速实现仿微信短视频录制(轻触拍照.长按录像) https://github.com/ldlywt/MyCameraX 微信短视频android端 https:/ ...
- 十分钟实现 Android Camera2 相机拍照
1. 前言 因为工作中要使用Android Camera2 API,但因为Camera2比较复杂,网上资料也比较乱,有一定入门门槛,所以花了几天时间系统研究了下,并在CSDN上记录了下,希望能帮助到更 ...
- android 自定义相册选择,Android通过手机拍照或从本地相册选取图片设置头像
像微信.QQ.微博等社交类的APP,通常都有设置头像的功能,设置头像通常有两种方式: 1.让用户通过选择本地相册之类的图片库中已有的图像,裁剪后作为头像. 2.让用户启动手机的相机拍照,拍完照片后裁剪 ...
- android 7调用摄像头,Android调用摄像头拍照(兼容7.0)
[实例简介] Android调用摄像头拍照(兼容7.0)Demo,原博客文章https://blog.csdn.net/u010356768/article/details/70808162 [实例截 ...
最新文章
- 1.3 机器学习基础-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- C++基类与派生类的转换与多态性
- golismero web扫描器
- jsencrypt加密结果false(网罗答案) - 分析篇
- VS里的新建模板(自动添加版本注释)
- 位运算判断奇偶数_基础拾遗:除了amp;和amp;amp;的区别,你还要知道位运算的这5个运算符...
- 微服务升级_SpringCloud Alibaba工作笔记0006---spring gateway工作流程
- 深度linux任务栏,Deepin系统的dde-dock任务栏出不来的有效解决方法
- android studio release error INSTALL_FAILED_INSUFFICIENT_STORAGE
- 无法保存关闭文件 苹果电脑 显示正在保存_??Linux文件编辑 - 给你骨质唱疏松
- devgis分享 只分享有价值的东西!http://download.csdn.net/user/devgis
- 我的上岸之旅——深圳工业大学
- 牛客(基础位运算)起床困难症
- MySQL 根据身份证查找年龄段
- 各种数据库中的dual表
- 史上最详细的Stacked Hourglass姿态检测算法详解(源码分析)
- Bootstrap下拉菜单失效的解决方法+使用Bootstrap制作响应式网页
- 修改linux编译配置文件,Porting:linux内核编译、配置、修改配置文件、添加.c文件到内核...
- 什么牌子的蓝牙耳机耐用?2023年最值得入手的蓝牙耳机分享
- 音视频开发之旅(36) -FFmpeg +OpenSL ES实现音频解码和播放