鸿蒙开源三方组件 —— TitanCamera 原创 精华

Asia_No.1_SG_Rai
发布于 2021-7-27 17:58
浏览
3收藏

1. 介绍

TitanCamera是OpenHarmony平台的相机库。它建立在Camera-API之上,实现了相机摄像头的切换、拍照、图片保存等功能,解决了开发人员在开发相机相关应用时遇到的图像拉伸、图像镜像等常见问题。

2. 效果展示

鸿蒙开源三方组件 —— TitanCamera-鸿蒙开发者社区

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

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
5
收藏 3
回复
举报
1条回复
按时间正序
/
按时间倒序
vsrrrrrb
vsrrrrrb

点赞,太少相机第三方的支持了。自己写的太麻烦。

回复
2021-11-6 21:01:48
回复
    相关推荐