1.1.7 • Published 2 years ago

@itmirror/uvc-camera-jssdk v1.1.7

Weekly downloads
-
License
-
Repository
-
Last release
2 years ago

@itmirror/uvc-camera-jssdk

js-sdk for uvc-camera,封装安卓端方法调用和上传

安装

npm i @itmirror/uvc-camera-jssdk --save

使用

import uvcCamera from '@itmirror/uvc-camera-jssdk'

// web开发环境调试,需引入下面的测试数据
// 生产环境记得删除
import guaguaData from '@itmirror/uvc-camera-jssdk/lib/guaguaData.js'
uvcCamera.init('camera', { devData: guaguaData });

创建实例

// 第一个参数为父容器的id,需要设置宽高
let myCamera = uvcCamera.init('camera', {
    host: '', // 请求地址
    uploadAction: '/upload', // 上传路径
    successAction: '/success', // 成功路径
    fps: 20, // 帧率
    retry: 3, // 上传重试次数
    fileType: 'base64' // 返回的文件格式
    buttonEvent: function () {} // 硬件按钮触发
}, function () {
    console.log('init success');
})

修改配置

myCamera = uvcCamera.update({
    fps: 15,
    retry: 5,
    fileType: 'file'
})

开启摄像头

myCamera.open(function (json) {}) // 开启后,自动开始传输数据

开始传输数据

myCamera.start()

拍照

myCamera.takePicture(function (data) {
    console.log('图片为:', data)
})

换灯

// 可选值: green, red, blue
myCamera.setLight('red')

重拍上一张

myCamera.prev()

拍下一张

myCamera.next()

上传

myCamera.upload({
    options: {
        timeout: 10000
    },
    success: (ret) => {
        console.log('上传成功!')
    },
    fail: (err, ret) => {
        console.log('啊哦,上传失败了~')
    },
    progress: (percent) => {
        console.log('上传进度: ', percent)
    }
})

取消上传

myCamera.abortUpload()

清除全部文件

myCamera.clear()

停止传输数据

myCamera.stop()

关闭摄像头

myCamera.close()

销毁实例:可能会导致重新请求usb授权,原则上无需销毁

myCamera.destroy()

参数

字段默认值类型描述
fps20Number帧率,最大为20
retry3Number上传失败重试次数
fileTypebase64String拍照返回的文件类型: base64, file
buttonEventnullFunction硬件按钮事件
host''String请求地址
uploadAction'/api/uploadImg'String上传路径
successAction'/api/uploadImgSuccess'String上传完成通知路径
uploadMultipletrueBoolean是否一起上传

完整示例

// html
<script src="../lib/guaguaData.js"></script>
<script src="../lib/index.js"></script>
// js
<script>
const $result = document.getElementById('result');
const $statusBtn = document.getElementById('statusBtn');
// 初始化
let isInit = false;
let isOpen = false;
let c;
init();

function init(cb = function() {}) {
    c = uvcCamera.init('camera', {
        host: 'http://192.168.61.156:7001', // 上传地址
        uploadAction: '/skinTest/uploadImg', // 上传地址
        successAction: '/skinTest/uploadImgSuccess', // 通知地址
        devData: guaguaData,
        buttonEvent: function() {
            console.log('button-handle');
            takePicture();
        }
    }, () => {
        isInit = true;
        cb();
        console.log('init success');
    });
}

function doChange() {
    if (!isInit) {
        init(changeStatus);
    } else {
        changeStatus();
    }
}

// 开始 or 停止
let isStop = true;
function changeStatus() {
    if (!isOpen) {
        // 开启摄像头
        c.open((json) => {
            if (!json.status) {
                console.log('摄像头开启失败!')
                isStop = true;
                $statusBtn.innerText = '开始';
                return;
            }
            isOpen = true;
            isStop = false;
            $statusBtn.innerText = '停止';
        })
        return
    }

    isStop = !isStop;
    $statusBtn.innerText = isStop ? '开始' : '停止';
    isStop ? c.stop() : c.start();
};

// 换灯
let light_i = 0;
const lights = ['green', 'red', 'blue'];
function changeLight() {
    light_i++;
    light_i = light_i > lights.length - 1 ? 0 : light_i;
    c.setLight(lights[light_i])
}

// 拍照
function takePicture() {
    c.takePicture(function (data) {
        console.log('data is: ', data)
        const img = document.createElement('img');
        img.src = data;
        $result.appendChild(img);

        setTimeout(() => {
            c.next(); // 拍下一张
        }, 1500);
    });
}

// 上传
function upload() {
    c.upload({
        success: function(res) {
            console.log(res)
            console.log('上传成功!')
            c.destroy()
        },
        fail: function(err) {
            console.log(err)
            console.log('上传失败...')
        },
        progress: function(val) {
            console.log(val)
            console.log('上传进度: ', val);
        },
    })
}

// 销毁
function destroy() {
    if (c) {
        c.destroy();
        c = null;
        isStop = true;
        isInit = isOpen = false;
        $statusBtn.innerText = '开始';
    }
}
</script>

注意❗

  • 上传完成会清空所有拍摄的照片,请自行保存
  • 调用open之前需要等init完成
  • 对应安卓方法在 android.md
1.1.7

2 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago