更新记录

1.0.1(2025-04-10) 下载此版本

修改插件标题

1.0.0(2025-04-10) 下载此版本

第一个版本


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 4.16 ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

y-custom-camera

组件介绍

本插件是一个可以自定义相机的组件,可以实现身份证取景位置对比,图片水印相机等功能

组件文档

属性名 类型 必传 默认值 说明
cameraConfig Object false {width: 700, height: 500} 相机取景框宽高(最后拍照呈现的照片宽高),单位rpx。
watermarkImage Object true {url: '',width: 50,height: 50,top: 0,left: 0} 水印图片配置,完整介绍见下方“watermarkImage属性说明”
printWatermark Boolean false true 拍照结果是否打印水印图片
autoPreview Boolean false true 拍照后是否打开预览
flash auto、on、off,、torch false off 闪光灯控制,auto自动、on打开、off关闭、torch常亮
outputDimension 360P、540P、720P、1080P、max false 1080p 相机拍照,录制的分辨率。有效值为 360P、540P、720P、1080P、max。

watermarkImage属性说明

属性值 参数类型 默认值参数 必填 说明
url String true 水印图片地址(cdn或临时路径)
width Number 50 true 水印图片宽度,单位rpx。
height Number 50 true 水印图片高度,单位rpx。
top Number 50 true 水印图片与相机取景框顶部的距离,单位rpx。
left Number 50 true 水印图片与相机取景框左边的距离,单位rpx。

事件

事件名 返回值类型 说明
takePhoto Promise 拍照事件,在外部使用的页面通过ref调用该组件的takePhoto 方法。如vue3中使用: customCamera.value?. takePhoto()

完整示例

<template>
    <view class="content">
        <view class="container">
            <y-custom-camera 
                ref="customCamera" 
                :cameraConfig="cameraConfig"
                :watermarkImage="watermarkImage"
            ></y-custom-camera>         
        </view>

        <view class="takebtn">
            <view @click="takePhoto" class="btn">
                <text>拍照</text>
            </view>
        </view>
        <view class="tips">拍照结果:</view>
        <view class="takeimage">
            <image :src="image_url" :style="{width: cameraConfig.width+'rpx', height: cameraConfig.height+'rpx'}"></image>
        </view>
    </view>
</template>

<script setup>
    import { ref } from 'vue';
    const customCamera = ref();
    // 相机大小
    const cameraConfig = ref({
        width: 700,
        height: 500
    });
    // 水印图片配置,必填
    const watermarkImage = ref({
        url: '图片地址(cdn地址或临时地址)',
        width: 375,
        height: 250,
        top: 50,
        left: 50,
    });
    // 拍照结果图片
    const image_url = ref('');

    // 返回拍照后的图片路径
    const takePhoto = async () => {
        try{
            const res = await customCamera.value.takePhoto();
            console.log('拍照结果',res);
            image_url.value = res.image_url;
        }catch(err){
            console.log("err=>",err);
        }
    }
</script>

<style lang="scss" scoped>
    .container{
        display: flex;
        justify-content: center;
        margin-top: 50rpx;
    }
    .takebtn {
        margin-top: 50rpx;
        display: flex;
        justify-content: center;
        .btn {
            background-color: #ddd;
            border-radius: 10rpx;
            width: 160rpx;
            height: 80rpx;
            display: flex;
            justify-content: center;
            align-items: center;
        }
    }
    .tips{
        text-align: center;
        font-size: 48rpx;
        margin: 20rpx;
        color: red;
    }
    .takeimage{
        display: flex;
        justify-content: center;
    }
</style>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

相机权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问