第一篇文章介绍了相机的基础拍照和录制视频的功能,本篇介绍一下相机添加水印和扫描二维码功能
第一篇文章传送门:
https://www.jianshu.com/p/d273c8d6bc94
添加水印功能
//创建一个水印参数 同样是构造者模式
val watermarkOptions = WatermarkOptions.Companion.WatermarkOptionsBuilder()
.setWatermarkView(watermark)//水印可以是自定义View
.setPreviewShowWaterMark(true)//设置预览时是否展示水印 默认就是true
.setMode(CameraConstant.WATER_MARK_BOTH) //只图片or只视频or全加水印,默认全加
//设置水印的位置 下边详细说明
.setWatermarkPosition(WatermarkPosition(CameraConstant.WATER_POSITION_BOTTOM_RIGHT, x, y))
//设置给图片加水印后是否要保存成文件,设置false 只会返回Bitmap,就节省了一次IO操作
.setSaveWatermarkTofile(true)
.setCreateWatermarkFileName {
//给图片加水印时水印图片的名字生成函数
}
.setCreateWatermarkVideoFileName {
//给视频加水印时水印图片的名字生成函数
}
.build()
特别说明一下水印位置的封装类Position
WatermarkPosition("位置枚举", x, y) //水印位置数据类
//位置枚举值
CameraConstant {
const val WATER_POSITION_TOP_LEFT = 0 //左上位置 x代表marginLeft, y代表marginTop
const val WATER_POSITION_TOP_RIGHT = 1 //右上位置 x代表marginRight, y代表marginTop
const val WATER_POSITION_BOTTOM_LEFT = 2 //左下位置 x代表marginLeft, y代表marginBottom
const val WATER_POSITION_BOTTOM_RIGHT = 3 //右下位置 x代表marginRight, y代表marginBottom
const val WATER_POSITION_CENTER = 4 //中心位置 x y可以随意填写
}
controller.takePicture(
object : ImageSavedCallback {
override fun onError(message: String?, code: Int) {
}
override fun onImageSaved(originUri: Uri, bitmap: Bitmap?, watermarkFile: File?) {
//originUri 相机拍照的原始照片文件
//相片需要添加水印,返回的Bitmap
//如果合成水印的照片需要保存成文件,返回文件对象 同时也有Bitmap
}
},
)
controller.startRecord(
object : VideoSavedCallback {
override fun onVideoSaved(uri: Uri, watermarkFile: File?) {
//uri 原始视频文件 watermarkFile加上水印后的视频文件
}
override fun onError(videoCaptureError: Int, message: String, cause: Throwable?) {
}
override fun onWatermarkVideoProgressing(progress: Int, progressTime: Long) {
//录制视频完成后开始合成水印的进度
}
},
)
扫描二维码、条形码功能
controller.startScan(object : CodeAnalysisCallback{
override fun onCodeAnalysisSuccess(
resultList: ArrayList<String>,
rectList: ArrayList<RectF>,
imageWidth: Int,
imageHeight: Int
) {
// resultList 二维码中的文字,画面可能出现多个二维码
// rectList 二维码图片对应的位置 跟resultList按顺序对应
// 整张图片的宽高 一般不用
}
override fun onCodeAnalysisFail(fail: Exception) {
//图片分析出现异常
}
override fun onCodeAnalysisComplete() {
//图片分析结束 一般不用
}
})
以上就是给照片和视频加水印,以及扫描二维码功能使用方法
欢迎各位提bug和需求,感谢加星~
GitHub地址:
https://github.com/cgztzero/CameraxExtent/tree/master
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END





















暂无评论内容