国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端調(diào)用電腦攝像頭

這篇具有很好參考價(jià)值的文章主要介紹了前端調(diào)用電腦攝像頭。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

項(xiàng)目中需要前端調(diào)用,所以做了如下操作
先看一下效果吧
主要是基于vue3,通過canvas把畫面轉(zhuǎn)成base64的形式,然后是把base64轉(zhuǎn)成
file文件,最后調(diào)用了一下上傳接口

但是這個(gè)得開啟瀏覽器的攝像頭權(quán)限,不然會(huì)報(bào)錯(cuò)

前端調(diào)用電腦攝像頭,js,view,前端,vue.js,chrome,ajax
以下是代碼

進(jìn)入頁面先調(diào)用一下攝像頭


  navigator.mediaDevices
    .getUserMedia({ video: true })
    .then((stream) => {
      video.value.srcObject = stream
    })
    .catch((error) => {
      console.error(error)
    })
  state.photoUrl = ''
  state.photo = true

拍照


const canvas = document.createElement('canvas')
  canvas.width = video.value.videoWidth
  canvas.height = video.value.videoHeight
  canvas.getContext('2d').drawImage(video.value, 0, 0, canvas.width, canvas.height)
  state.photoUrl = canvas.toDataURL('image/png')


轉(zhuǎn)base64

  let arr = dataurl.split(',')
  let mime = arr[0].match(/:(.*?);/)[1]
  let suffix = mime.split('/')[1]
  let bstr = atob(arr[1])
  let n = bstr.length
  let u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new File([u8arr], `${filename}.${suffix}`, {
    type: mime,
  })

完整代碼

<template>
  <div>
    <div>
      <div>攝像頭實(shí)時(shí)畫面</div>
      <div class="hm">
        <video ref="video" v-if="state.photo" autoplay></video>
        <img :src="state.photoUrl" v-else>
      </div>
    </div>
    <div class="maT10">
      <el-button @click="takePhoto">
        拍照
      </el-button>
      <el-button @click="retake">
        重拍
      </el-button>
    </div>
  </div>
</template>

<script setup lang="ts" name="photo">
import axios from 'axios'
const state = reactive({
  photo: true,
  photoUrl: '',
})
const video = ref()

const takePhoto = () => {
  const canvas = document.createElement('canvas')
  canvas.width = video.value.videoWidth
  canvas.height = video.value.videoHeight
  canvas.getContext('2d').drawImage(video.value, 0, 0, canvas.width, canvas.height)
  state.photoUrl = canvas.toDataURL('image/png')

  clearVideo()
  state.photo = false
  //將圖片發(fā)送到接口
  let file = base64ImgtoFile(state.photoUrl)
  let param = new FormData()
  param.append('file', file, file.name)
  param.append('fileReName', 'true')
  let config = {
    headers: {
      'Content-Type': 'multipart/form-data',
      Authorization: 'token',  //此處是token
    },
  }

  let url = import.meta.env.VITE_API_URL + '/api/admin/file/upload-file'
  axios.post(url, param, config).then((response) => {})
}
const base64ImgtoFile = (dataurl, filename = 'file') => {
  let arr = dataurl.split(',')
  let mime = arr[0].match(/:(.*?);/)[1]
  let suffix = mime.split('/')[1]
  let bstr = atob(arr[1])
  let n = bstr.length
  let u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new File([u8arr], `${filename}.${suffix}`, {
    type: mime,
  })
}
const clearVideo = () => {
  const stream = video.value.srcObject
  const tracks = stream.getTracks()
  tracks.forEach((track) => {
    track.stop()
  })
  video.value.srcObject = null
}

const retake = () => {
  navigator.mediaDevices
    .getUserMedia({ video: true })
    .then((stream) => {
      video.value.srcObject = stream
    })
    .catch((error) => {
      console.error(error)
    })
  state.photoUrl = ''
  state.photo = true
}

onMounted(() => {
  retake()
})
//在離開當(dāng)前頁面的時(shí)候把攝像頭關(guān)了,不然頁面一直會(huì)顯示攝像頭的圖標(biāo)
onBeforeUnmount(() => {
  video.value.srcObject = null
})
</script>

<style scoped lang="scss">
.hm {
  width: 400px;
  height: 300px;
  video,
  img {
    width: 100%;
  }
}
</style>

前端調(diào)用電腦攝像頭,js,view,前端,vue.js,chrome,ajax文章來源地址http://www.zghlxwxcb.cn/news/detail-684248.html

到了這里,關(guān)于前端調(diào)用電腦攝像頭的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 如何使用Opencv調(diào)用電腦攝像頭?

    當(dāng)我們想要使用opencv對視頻圖像進(jìn)行處理時(shí),往往第一步便是需要調(diào)用電腦攝像頭,下面博主將提供兩種版本的代碼(含詳細(xì)注釋),幫助大家學(xué)習(xí)如何使用Opencv調(diào)用電腦攝像頭進(jìn)行視頻錄制并保存: 一、C++版本 1. 從相機(jī)中讀取視頻 2. 從文件中讀取視頻 3. 保存視頻 二、P

    2024年02月11日
    瀏覽(93)
  • 【QT】QT調(diào)用電腦攝像頭并拍照

    【QT】QT調(diào)用電腦攝像頭并拍照

    建議搭配視頻食用: 【【QT】QT調(diào)用電腦攝像頭并拍照】 https://www.bilibili.com/video/BV1pc411G7qy/?share_source=copy_webvd_source=c0d9dd4e64b88e4dbf93ac009c2010dc 一、在pro文件中添加‘multimedia multimediawidgets’ 二、在ui界面創(chuàng)建一個(gè)widget并改名為camera用于展示攝像頭內(nèi)容和pushbutton 用于拍照,并右鍵

    2024年02月12日
    瀏覽(21)
  • 電腦調(diào)用 iPhone 攝像頭全過程(iVCam)

    電腦調(diào)用 iPhone 攝像頭全過程(iVCam)

    最近不是停課不停學(xué)嗎,令人“深惡痛絕”的釘釘又進(jìn)入了我們學(xué)生的生活。但是初中的網(wǎng)課相比小學(xué)的又增加了一個(gè)要求:全程攝像頭拍攝。但是,我這筆記本沒有攝像頭啊!突然想起來好像手機(jī)的攝像頭可以給電腦調(diào)用。話不多說,直接開始折騰~ 1. 準(zhǔn)備材料 1. 一部 Wi

    2024年02月09日
    瀏覽(24)
  • JS PC端調(diào)用攝像頭錄視頻截圖上傳文件

    創(chuàng)建 Catcher 類 直接在HTML文件中調(diào)用

    2024年02月10日
    瀏覽(27)
  • 前端如何利用js開啟攝像頭和關(guān)閉攝像頭以及他的指示燈

    其實(shí)本文章主要想要講解的就是如何關(guān)閉攝像頭以及他的指示燈,因?yàn)檫@個(gè)事真的很讓我苦惱,而開啟攝像頭其實(shí)并沒有那么難,只需調(diào)用navigator.mediaDevices.getUserMedia方法就行,具體就不細(xì)講了,直接上代碼(HTML結(jié)構(gòu)就是一個(gè)video標(biāo)簽和兩個(gè)button按鈕,所以就只上js部分了) 開啟

    2024年02月13日
    瀏覽(29)
  • ??禂z像頭前端調(diào)用實(shí)時(shí)畫面解決方案(無插件版開發(fā))

    海康攝像頭前端調(diào)用實(shí)時(shí)畫面解決方案(無插件版開發(fā))

    項(xiàng)目中有一個(gè)需求,是需要把??禂z像機(jī)的實(shí)時(shí)畫面在項(xiàng)目前端的頁面中展示出來。本文的技術(shù)棧主要用到了 vue3、vite、threejs 等,輔助軟件主要有 ??底詭У膇VMS-4200 3.9.1.4 客戶端、VLC media player 等。原先最開始是想使用??倒俜教峁┑腤EB無插件開發(fā)包,但是在實(shí)際開發(fā)中發(fā)

    2024年02月16日
    瀏覽(92)
  • 使用ffmpeg調(diào)用電腦自帶的攝像頭和揚(yáng)聲器錄制音視頻

    使用ffmpeg調(diào)用電腦自帶的攝像頭和揚(yáng)聲器錄制音視頻

    1、打開cmd,執(zhí)行 chcp 65001 ,修改cmd的編碼格式為utf8,避免亂碼 2、執(zhí)行指令 ffmpeg -list_devices true -f dshow -i dummy ,查看當(dāng)前window的音頻和視頻名稱 3、打開windows系統(tǒng)的\\\"打開聲音設(shè)置\\\"–“麥克風(fēng)隱私設(shè)置”–\\\"允許應(yīng)用訪問你的麥克風(fēng)\\\"點(diǎn)擊開啟 錄制視頻: 錄制音頻: 錄制音視頻:

    2024年02月04日
    瀏覽(33)
  • [Unity/AR]使用vuforia開發(fā)項(xiàng)目時(shí)無法調(diào)用電腦前置攝像頭怎么辦?

    [Unity/AR]使用vuforia開發(fā)項(xiàng)目時(shí)無法調(diào)用電腦前置攝像頭怎么辦?

    我當(dāng)時(shí)試了一萬種方法,經(jīng)過無數(shù)漫長黑夜的折磨 我發(fā)現(xiàn),就是裝unity的時(shí)候加了中文路徑。。。 有可能還會(huì)提示DATABASES _LOAD_ERROR? 也是中文路徑的問題 ?謹(jǐn)以此文警醒自己 所有和uniyy相關(guān)的東西都不要放在中文路徑?。?!

    2024年02月07日
    瀏覽(32)
  • Python——UDP Socket實(shí)現(xiàn)視頻互傳,遠(yuǎn)程調(diào)用另一臺(tái)電腦攝像頭(cv2)

    Python——UDP Socket實(shí)現(xiàn)視頻互傳,遠(yuǎn)程調(diào)用另一臺(tái)電腦攝像頭(cv2)

    目錄 一臺(tái)電腦當(dāng)服務(wù)器多線程提供攝像頭服務(wù),支持多臺(tái)電腦調(diào)用 一、效果展示 和舍友聯(lián)機(jī),多臺(tái)電腦效果 二、帶注釋的代碼 1.服務(wù)端 ?2.客戶端 用一個(gè)電腦當(dāng)服務(wù)端,舍友當(dāng)客戶端連接 監(jiān)控寢室外面的情況 客戶端需要使用命令行調(diào)用 ? 還支持保存?zhèn)鬏攣淼囊曨l,記錄日

    2024年02月12日
    瀏覽(19)
  • VUE+faceApi.js實(shí)現(xiàn)攝像頭拍攝人臉識(shí)別

    VUE+faceApi.js實(shí)現(xiàn)攝像頭拍攝人臉識(shí)別

    需求:前端獲取到攝像頭信息,通過模型來進(jìn)行判斷人像是否在鏡頭中,鏡頭是否有被遮擋。 實(shí)現(xiàn)步驟: 1、通過video標(biāo)簽來展示攝像頭中的內(nèi)容 2、通過canvas來繪制視頻中信息進(jìn)行展示 3、在拍照時(shí)候?qū)anvas的當(dāng)前幀轉(zhuǎn)成圖片 下載依賴 face-api.js是核心依賴必須要下 element-ui為

    2024年02月01日
    瀏覽(40)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包