鸿蒙开源三方组件 —— TitanCamera 原创 精华
1. 介绍
TitanCamera是OpenHarmony平台的相机库。它建立在Camera-API之上,实现了相机摄像头的切换、拍照、图片保存等功能,解决了开发人员在开发相机相关应用时遇到的图像拉伸、图像镜像等常见问题。
2. 效果展示
3. 安装介绍及依赖
1、编译har包titan-camera.har。
2、启动deveco studio,将编译好的har包导入项目目录“entry>LIBS”。
3、在moudle级别下的build.gradle文件中添加依赖项,在dependencies标签中添加对LIBS目录下har包的引用。
(1). 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址
allprojects {
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/releases/'
}
jcenter()
}
}
(2). 在应用模块的build.gradle的dependencies闭包中,添加如下代码:
dependencies {
implementation "io.github.dzsf:TITAN_CAMERA:1.0.1"
}
4. 使用说明
(1) 通过CameraRequestBuilder创建Camera对象以启动Camera。
new CameraRequestBuilder()
.setEnableSwitchCamera(false) //enable switch button to switch between front and back camera
.setLensFacing(CameraProperties.LENS_FACING_BACK) //Camera to start (Front or back)
.setCustomLayoutId(null) //Any layout that goes on top of the preview
.build() // returns camera object
.startCamera(context, this::onCapture) // starts camera
==注: setEnableSwitchCamera 函数是设置是否支持转换摄像头的标志。默认设置是支持转换摄像头。如果不希望支持前后摄像头之间的切换,可以进行以下修改==
new CameraRequestBuilder()
.setEnableSwitchCamera(false) //enable switch button to switch between front and back camera
(2) 通过surfaceOps.setFixedSize(getHeight(), getWidth());避免由于分辨率导致的屏幕拉伸问题,其中getHeight(), getWidth()返回的结果是屏幕尺寸。
public final void surfaceCreated(SurfaceOps surfacePara) {
surfacePara.setFixedSize(this.pictureOptimumSizeScreen.height, this.pictureOptimumSizeScreen.width);
Surface surface = surfacePara.getSurface();
if(surface != null) {
cameraInit(this.abilitySlice.getContext(), surface, surfacePara);
new Thread(() -> openCamera()).start();
}
}
(3) 通过设置相机参数关闭前置摄像头的镜像。==注:使用后置相机拍照时,需要关闭镜像;使用前置相机时,需要打开镜像。==
if(this.currentLensFacing == CameraProperties.LENS_FACING_FRONT){
frameConfigBuilder.setParameter(ParameterKey.IMAGE_MIRROR, true);
}else{
frameConfigBuilder.setParameter(ParameterKey.IMAGE_MIRROR, false);
}
(4). 拍照后的图片保存
点击拍照按钮后,默认保存到手机的"DCIM/Camera"文件夹下。
5. 相关资料
项目地址:https://gitee.com/openneusoft/titan-camera
IDE官方下载地址:https://developer.harmonyos.com/cn/develop/deveco-studio
点赞,太少相机第三方的支持了。自己写的太麻烦。