日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

调用摄像头_摄像头 | 浏览器调用摄像头并实现截图保存的效果

發布時間:2025/4/16 HTML 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调用摄像头_摄像头 | 浏览器调用摄像头并实现截图保存的效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?為了在QT上實現打開攝像頭,拍照等操作。就寫了這個。

1. 寫一個vue組件

先寫一個vue的組件,其內容基本如下:

<el-button type="primary" @click="openVideo">打開攝像頭</el-button> <el-button @click="closeVideo">關閉攝像頭</el-button> <el-button type="danger" @click="screenshot">截圖</el-button> <div><video id="video" ref="video" /> </div> <canvas ref="canvas" width="400" height="300" style="display:none" /> <!-- 截圖展示圖片 --> <img ref="screenshot">

2. 打開攝像頭

// 打開攝像頭openVideo() {// 老的瀏覽器可能根本沒有實現 mediaDevices,所以我們可以先設置一個空的對象console.log("navigator.mediaDevices", navigator.mediaDevices);if (navigator.mediaDevices === undefined) {navigator.mediaDevices = {};}// 一些瀏覽器部分支持 mediaDevices。我們不能直接給對象設置 getUserMedia// 因為這樣可能會覆蓋已有的屬性。這里我們只會在沒有getUserMedia屬性的時候添加它。if (navigator.mediaDevices.getUserMedia === undefined) {navigator.mediaDevices.getUserMedia = constraints => {// 首先,如果有getUserMedia的話,就獲得它const getUserMedia =navigator.getUserMedia ||(navigator.getUserMedia =navigator.mozGetUserMedia ||navigator.webkitGetUserMedia ||navigator.msGetUserMedia);console.log("getUserMedia", getUserMedia);// 一些瀏覽器根本沒實現它 - 那么就返回一個error到promise的reject來保持一個統一的接口if (!getUserMedia) {return Promise.reject(new Error("該瀏覽器暫不支持攝像頭!"));}// 否則,為老的navigator.getUserMedia方法包裹一個Promisereturn new Promise((resolve, reject) => {getUserMedia.call(navigator, constraints, resolve, reject);});};}const constraints = {audio: true,video: {width: { ideal: 1280, max: 1920 },height: { ideal: 720, max: 1080 }}};console.log("window.navigator", window.navigator);window.navigator.mediaDevices.getUserMedia(constraints).then(stream => {const video = this.$refs.video;// 舊的瀏覽器可能沒有srcObjectif ("srcObject" in video) {video.srcObject = stream;} else {// 防止在新的瀏覽器里使用它,因為它已經不再支持了video.src = window.URL.createObjectURL(stream);}video.onloadedmetadata = e => {video.play();};}).catch(err => {console.log(err.name + ": " + err.message);});}

沒錯,這個代碼是在mdn上的,幾乎沒有任何改變,例子講的挺好的。

3. 截圖并保存

// 截圖screenshot() {// 獲取視頻const video = this.$refs.video;// 獲取截圖的地址const screenshot = this.$refs.screenshot;// 獲取canvasconst canvas = this.$refs.canvas;// 渲染一個2d平面的視圖const ctx = canvas.getContext("2d");// 設置canvas 視圖文件地址和大小ctx.drawImage(video, 0, 0, 400, 300);// 將數據轉為base64賦值給img標簽的src屬性screenshot.src = canvas.toDataURL("image/png");console.log("screenshot.src", screenshot.src);const imgData = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");// 下載圖片到本地const save_link = document.createElementNS("http://www.w3.org/1999/xhtml","a");save_link.href = imgData;save_link.download = "file_" + new Date().getTime() + ".png";save_link.click();}

4. 關閉攝像頭

// 關閉攝像頭closeVideo() {console.log("srcObject", this.$refs.video.srcObject);const srcObject = this.$refs.video.srcObject ? this.$refs.video.srcObject.getTracks() : this.$refs.video.src.getTracks()srcObject.forEach(track => {track.stop();this.$refs.video.src = null;});},

關閉攝像頭,是先獲取這個這個視頻所在的任務,然后關閉每一個任務,并將其地址設為空。

5. 在electron遇到的問題

開發的時候,在electron中使用遇到調用不了攝像頭的問題。經過多次debug之后,發現是http和https的原因。

所以打包好后的文件在electron中使用,是可以調用攝像頭并截圖保存的。

總結

以上是生活随笔為你收集整理的调用摄像头_摄像头 | 浏览器调用摄像头并实现截图保存的效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩av无码一区二区三区 | 成人午夜影院在线观看 | 欧美色就是色 | 亚洲专区一区 | 秋霞成人| 国产区一区二 | 色哟哟欧美精品 | 欧美一区二区三 | 免费特级毛片 | 欧美日韩aa| 日韩成人av一区 | 尤物av无码色av无码 | 欧美贵妇videos办公室 | 成人在线观看免费高清 | 久久只有这里有精品 | 污视频在线观看网址 | 色激情网 | 欧美性一区二区 | 草久久| 日韩一区二区三区免费 | 午夜美女视频 | 91蜜桃网站 | 黑人乱码一区二区三区av | 狠狠干夜夜操 | wwwxx在线观看 | 秋霞福利影院 | 久久久久久久久一区 | 日韩天堂网| 亚洲精品一区二区三区新线路 | 国产老妇视频 | 在线免费视频观看 | 免费看a网站 | 欧美巨大乳 | 成人免费视频大全 | 麻豆综合| 久久大伊人 | 成人欧美在线 | 日韩av不卡电影 | 日本一区二区在线看 | 亚洲综合网站 | 桃谷绘里香在线观看 | 高潮毛片又色又爽免费 | 激情黄色av | 超级碰碰97 | 天降女子在线 | 日韩一区二区在线观看视频 | 午夜老湿机| 日产精品久久久久久久蜜臀 | 日韩精品一二三四区 | 国产做爰全过程免费视频 | 99成人在线视频 | 成人在线一区二区三区 | 亚洲欧美伦理 | 性xxxx搡xxxxx搡欧美 | 日韩精品一区二区三区久久 | 韩日产理伦片在线观看 | sm乳奴虐乳调教bdsm | 一级片少妇 | 成人无码av片在线观看 | 男人天堂导航 | 喷潮在线观看 | 亚洲性视频在线 | 日产av在线播放 | 亚洲蜜臀av | 女性裸体瑜伽无遮挡 | 性欧美1819性猛交 | 打开免费观看视频在线 | av噜噜色 | 国产69精品一区二区 | 校园春色中文字幕 | 老司机午夜精品视频 | 中文字幕 欧美日韩 | 国产三级精品在线观看 | 在线免费观看日韩av | 精品熟女一区二区 | 欧美一级片观看 | 18禁裸乳无遮挡啪啪无码免费 | 免费观看一级一片 | 国产九九热 | 中文字幕一级 | 中文字幕少妇在线三级hd | mm1313亚洲精品 | 亚洲精品久久久久久无码色欲四季 | 538国产精品一区二区 | 久免费一级suv好看的国产 | 有码在线播放 | 国产女厕一区二区三区在线视 | 国产成人精品自拍 | 美日韩在线视频 | 色婷婷av一区二区三区之e本道 | 日韩欧美一区二区三区在线观看 | 超碰在线9 | 探花av在线| 538国产视频 | 韩日成人 | 狠狠的干狠狠的操 | 精品欧美乱码久久久久久1区2区 | 3344av| 在线观看视频福利 |