Vue ruft die Computerkamera auf, um die Fotofunktion zu realisieren

Vue ruft die Computerkamera auf, um die Fotofunktion zu realisieren

In diesem Artikelbeispiel wird der spezifische Code von vue zum Aufrufen der Computerkamera zur Realisierung der Fotofunktion als Referenz angegeben. Der spezifische Inhalt ist wie folgt

Implementierungs-Effekt-Diagramm:

Vor und nach dem Aufnehmen von Fotos (Die Kamera meines Computers hat das Bild blockiert, daher ist das Bild grau)

1. Klicken Sie auf die Foto-Upload-Funktion, um die Computerkamera-Berechtigungen abzurufen

2. Nachdem Sie die Verwendung der Kamera zulassen ausgewählt haben, wird im Kamerabereich auf der Seite das Bild angezeigt

3. Klicken Sie auf die Foto-Schaltfläche und das aufgenommene Bild wird rechts angezeigt. Klicken Sie auf Speichern


Vollständiger Code:

Was ich hier geschrieben habe, ist eine Komponente, daher wird das auslösende Ereignis des Aufrufs der Kamera von der übergeordneten Komponente übergeben. Sie können auch direkt auf eine Seite schreiben.

<Vorlage>
  <div Klasse="Kamera-Box" Stil="Breite: 900px;">
    <el-row :gutter="20">
      <el-col :span="12">
        <div style="text-align: center;font-size: 14px;font-weight: bold;margin-bottom: 10px;">Kamera</div>
        <!-- Dies ist der von der Kamera angezeigte Bildschirm-->
        <video id="video" width="400" height="300"></video>
        <div Klasse="iCenter" >
          <el-button type='primary' size='small' icon="el-icon-camera" @click="takePhone" style="margin-top: 10px;">Foto machen</el-button>
        </div>
      </el-col>
      <el-col :span="12">
        <div style="text-align: center;font-size: 14px;font-weight: bold;margin-bottom: 10px;">Fotografieeffekt</div>
        <!-- Hier sehen Sie den Bildschirminhalt, der angezeigt wird, wenn Sie zum Aufnehmen eines Fotos auf „Klicken“ klicken-->
        <Leinwand id='Leinwand' Breite='400' Höhe='300' Stil="Anzeige: Block;"></Leinwand>
        <el-button :loading="loadingbut" icon="el-icon-check" type='primary' size='small' @click="takePhoneUpfile" style="margin-top: 10px;">Speichern</el-button>
      </el-col>
    </el-row>
</div>
</Vorlage>
<Skript>
  importiere {putFileAttach} von "@/api/customer/animalinfo";
  Standard exportieren {
    Requisiten:{
      tackPhoto:{//Der von der übergeordneten Komponente übergebene Statustyp: Boolean,
        Standard: falsch
      }
    },
    Daten() {
      zurückkehren {
        wird geladen, aber:false,
        preViewVisible: false,
        blobFile: null,
        Leinwand: null,
        Video: null,
        mediaStreamTrack: '',
      }
    },
    betrachten:{
      tackFoto:{
        sofort: wahr,
        Handler (neuer Wert) {//Nachdem Sie den Aufnahmestatus erhalten haben, beginnen Sie mit dem Abrufen der Kameraberechtigungen. Wenn sich die Funktion in einer Komponente befindet, können die folgenden Schritte direkt in eine eigene Triggermethode geschrieben werden if (newVal) {
            var video = document.querySelector('video');
            var text = document.getElementById('text');
            // var mediaStreamTrack;
            
            // Kompatibler Code window.URL = (window.URL || window.webkitURL || window.mozURL || window.msURL);
            
            if (navigator.mediaDevices === undefiniert) {
            navigator.mediaDevices = {};
            }
            wenn (navigator.mediaDevices.getUserMedia === undefiniert) {
            navigator.mediaDevices.getUserMedia = Funktion (Einschränkungen) {
              var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
              wenn (!getUserMedia) {
              return Promise.reject(new Error('getUserMedia ist in diesem Browser nicht implementiert'));
              }
              returniere neues Promise(Funktion(auflösen, ablehnen) {
              getUserMedia.call(Navigator, Einschränkungen, Auflösen, Ablehnen);
              });
            }
            } 
            
            //Kameraanrufkonfiguration var mediaOpts = {
            Audio: falsch,
            Video: stimmt,
            Video: {facingMode: "Umgebung"} // oder "Benutzer"
            // Video: { Breite: 1280, Höhe: 720 }
            // Video: { facingMode: { exact: "Umgebung" } } // oder "Benutzer"
            }

            lass das=dies;
            navigator.mediaDevices.getUserMedia(mediaOpts).then(Funktion(stream) {
            das.mediaStreamTrack = stream;
            Video = Dokument.QuerySelector('Video');
            wenn ("srcObject" im Video) {
              video.srcObject = Stream
            } anders {
              video.src = Fenster.URL && Fenster.URL.createObjectURL(Stream) || Stream
            }
            video.abspielen();
            }).catch(Funktion (Fehler) {
              console.log(fehler)
            });
          
        }
       },
        tief:wahr
      },
    },
    montiert() {
      // Kamera this.video = document.getElementById('video');
      //Leinwand this.canvas = document.getElementById('Leinwand')
      
    },
    Methoden: {
      takePhone() {//Klicken, um ein Foto aufzunehmen let that = this;
        that.canvas.getContext('2d').drawImage(dieses.video, 0, 0, 400, 300);
        let dataurl = that.canvas.toDataURL('bild/jpeg')
        das.blobFile = das.dataURLtoFile(dataurl, 'kamera.jpg');
        das.preViewVisible = true
      },
      takePhoneUpfile() {//Bild speichern this.loadingbut=true;
        let formData = new FormData()
        formData.append('file', this.blobFile);//Bildinhalt// Bild hochladen putFileAttach(formData).then(res=>{//Backend-Schnittstelle this.loadingbut=false;
          dies.$emit('Bild',res.data.data);
          dies.tackPhoto=false;
          this.canvas.getContext('2d').clearRect(0, 0, 400, 300);//Leinwand leeren// Kamera schließen this.mediaStreamTrack.getVideoTracks().forEach(function (track) {
            track.stopp();
           });
        },Fehler=>{
          dies.loadingbut=false;
          window.console.log(Fehler);
        });
      },
    }
  }
</Skript>
<Stil>
 .Kamera-Box #Leinwand{
  Rand: 1px durchgezogen #DCDFE6;
  }
</Stil>

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Vue implementiert den Anruf der PC-Kamera, um Fotos in Echtzeit aufzunehmen
  • Vue ruft die PC-Kamera auf, um die Fotofunktion zu realisieren
  • Vue ruft die lokale Kamera auf, um die Fotofunktion zu realisieren
  • Vue2.0 implementiert die Funktion zum Aufrufen der Kamera zum Aufnehmen von Bildern, und exif.js implementiert die Funktion zum Hochladen von Bildern
  • Vue ruft die Kamera auf, um Bilder aufzunehmen und diese lokal zu speichern

<<:  Beispiel für die Konvertierung eines Zeitstempels in ein Datum in MySQL

>>:  Detaillierte Erklärung der Docker Compose-Verwendung

Artikel empfehlen

JavaScript implementiert die H5-Goldmünzenfunktion (Beispielcode)

Heute habe ich eine Aktivität für einen roten Ums...

So beheben Sie Dateisystemfehler in Linux mit „fsck“

Vorwort Das Dateisystem ist für die Organisation ...

Verwendung des Linux-Befehls passwd

1. Befehlseinführung Mit dem Befehl passwd werden...

Erläuterung des MySQL-Nicht-Null-Einschränkungsfalls

Inhaltsverzeichnis Legen Sie beim Erstellen einer...

Installieren Sie Ubuntu 18 ohne USB-Laufwerk unter Windows 10 mit EasyUEFI

1. BIOS überprüfen Überprüfen Sie zunächst, in we...

So zeigen Sie eine PDF-Datei mit pdfjs in vue in der Vorschau an

Inhaltsverzeichnis Vorwort denken Analysieren und...

Vollständige Schritte zur Deinstallation der MySQL-Datenbank

Der Vorgang zur vollständigen Deinstallation der ...

Analyse der Unterschiede zwischen Mysql InnoDB und MyISAM

MySQL unterstützt viele Arten von Tabellen (d. h....

Prometheus überwacht MySQL mithilfe der Grafana-Anzeige

Inhaltsverzeichnis Prometheus überwacht MySQL übe...

Zusammenfassung der praktischen Methoden von CSS3 (empfohlen)

1. Abgerundeter Rand: CSS- CodeInhalt in die Zwis...

Beispielcode zur Implementierung eines Laufschriftformats mit CSS3

Hintergrund Folgendes ist passiert: Luzhu erfuhr ...

So speichern Sie „false“ oder „true“ in MySQL

Boolescher MySQL-Wert, speichert „false“ oder „tr...

Detaillierte Installation und Verwendung von SSH in der Ubuntu-Umgebung

SSH steht für Secure Shell, ein sicheres Übertrag...