項(xiàng)目需求:使用google瀏覽器拍照保存到服務(wù)器肪凛。
google直接有通過js調(diào)取攝像頭的解決辦法navigator.mediaDevices.getUserMedia堰汉,
只需要傳一個(gè)參數(shù)constraints
let mediaStreamTrack = null; // 視頻對(duì)象(全局)
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();
});
基本也很簡(jiǎn)單,就是調(diào)取攝像頭然后放到video標(biāo)簽里面進(jìn)行播放伟墙。constraints參數(shù)意思就是讀取音頻和視頻翘鸭。這樣就可以直接獲取攝像頭的視頻流。但是這個(gè)視頻流不是很清晰(瘋狂投訴)戳葵。就乓。。
后來翻閱文檔發(fā)現(xiàn)這個(gè)constraints的video可以傳別的參數(shù)。width和height生蚁。官網(wǎng)是這樣寫的
當(dāng)由于隱私保護(hù)的原因噩翠,無法訪問用戶的攝像頭和麥克風(fēng)信息時(shí),應(yīng)用可以使用額外的constraints參數(shù)請(qǐng)求它所需要或者想要的攝像頭和麥克風(fēng)能力守伸。
下面演示了應(yīng)用想要使用1280x720的攝像頭分辨率:
本來以為這個(gè)參數(shù)加上去會(huì)變得清晰绎秒。但是事實(shí)是無效的。這個(gè)應(yīng)該是獲取指定分辨率攝像頭的尼摹。
于是就有了另一種解決方案见芹。通過node去調(diào)取得力高拍儀原生拍照保存的圖片路徑轧铁。但是圖片和我們的系統(tǒng)關(guān)聯(lián)只能通過時(shí)間去關(guān)聯(lián)罕邀。就有了以下代碼
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: "操作成功"
});
})
});
通過時(shí)間去找到符合條件的圖片,然后發(fā)回給前端缨睡。