google调取得力高拍仪拍照,以及图片不清晰解决方案

项目需求:使用google浏览器拍照保存到服务器。
google直接有通过js调取摄像头的解决办法navigator.mediaDevices.getUserMedia,
只需要传一个参数constraints

         let mediaStreamTrack = null; // 视频对象(全局)
          let constraints = {
//              video: {width: 3000, height: 2000},
                video: true,
                audio: true
            };
            let promise = navigator.mediaDevices.getUserMedia(constraints);
            promise.then(function (MediaStream) {
                mediaStreamTrack = typeof MediaStream.stop === 'function' ? MediaStream : MediaStream.getTracks()[1];
                video.srcObject = MediaStream;
                video.muted = true;
                video.play();
            });

基本也很简单,就是调取摄像头然后放到video标签里面进行播放。constraints参数意思就是读取音频和视频。这样就可以直接获取摄像头的视频流。但是这个视频流不是很清晰(疯狂投诉)。。。
后来翻阅文档发现这个constraints的video可以传别的参数。width和height。官网是这样写的

当由于隐私保护的原因,无法访问用户的摄像头和麦克风信息时,应用可以使用额外的constraints参数请求它所需要或者想要的摄像头和麦克风能力。
下面演示了应用想要使用1280x720的摄像头分辨率:

本来以为这个参数加上去会变得清晰。但是事实是无效的。这个应该是获取指定分辨率摄像头的。
于是就有了另一种解决方案。通过node去调取得力高拍仪原生拍照保存的图片路径。但是图片和我们的系统关联只能通过时间去关联。就有了以下代码

var express = require('express');
var router = express.Router();
const db = require('./db');
const path = require('path');
const fs = require('fs');
const dir = '文件路径';  // 注意要使用\\

// 获取图片
router.get('/touchScreen/getImages', function(req, res, next) {
  let sql = `SELECT  [INSPECTION_NBR]
  ,[STATUS]
  ,[ADD_DATETIME]
  ,[START_DATETIME]
  ,[END_DATETIME]
FROM [FIRST_INSPECTION] WHERE [INSPECTION_NBR]= ${req.query.INSPECTION_NBR}`;
  db.sql(sql, (result) => {
    if(!result.recordsets) {
      res.json({
          Status: -999,
          Message: '操作失败!'
      })
      return;
    }
    let files = fs.readdirSync(dir);
    let startDataTime = result.recordsets[0][0].START_DATETIME;
    let filterFiles = files.filter((x) => {
      return fs.statSync(dir + x).mtime.getTime() >= startDataTime
    })
    let imgArr = [];
    for(let i = 0; i < filterFiles.length; i++) {
      let bitmap = fs.readFileSync(dir + filterFiles[i]);
      let base64str = Buffer.from(bitmap, 'binary').toString('base64'); // base64编码
      imgArr.push({
        name: filterFiles[i],
        base64: base64str
      })
    }
    res.json({
        Status: 0,
        Data: imgArr,
        Message: "操作成功"
    });
  })
});

通过时间去找到符合条件的图片,然后发回给前端。

你可能感兴趣的:(google调取得力高拍仪拍照,以及图片不清晰解决方案)