Vue implementiert den Anruf der PC-Kamera, um Fotos in Echtzeit aufzunehmen

Vue implementiert den Anruf der PC-Kamera, um Fotos in Echtzeit aufzunehmen

Vue ruft die PC-Kamera auf, um Bilder in Echtzeit aufzunehmen. Zu Ihrer Information ist der spezifische Inhalt wie folgt

Da ich die Klickschaltfläche verwende, um das Modalfeld zum Aufnehmen eines Fotos zu öffnen, fügen Sie die Schaltflächen- und Modalfeldcodes hier wie folgt ein.

<!--Schaltfläche „Modalbox öffnen“-->
        <el-form-item label="*Foto:" prop="headImage">
          <el-input Typ="Text" v-Modell="imgSrc" />
            <el-col :span="1.5">
              <el-Schaltfläche
                @click="aufnehmen"
                Symbol="el-icon-Kamera"
                Größe="klein">
                Machen Sie ein Foto und laden Sie es hoch</el-button>
            </el-col>
        </el-form-item>
        <!--Bild nach der Aufnahme anzeigen-->
        <el-form-item label="" prop="imgSrc">
          <img v-if="imgSrc" :src="imgSrc" style="Breite: 200px;Höhe: 240px;" />
</el-form-item> 

<!--Modalbox zum Fotografieren-->
    <el-dialog
      Titel="Foto hochladen"
      :visible.sync="sichtbar"
      @close="beiAbbrechen"
      Breite="1065px">
      <div Klasse="Box">
        <video id="videoCamera" class="canvas" :width="videoWidth" :height="videoHeight" autoPlay></video>
        <canvas id="canvasCamera" class="canvas" :width="videoWidth" :height="videoHeight"></canvas>
      </div>
      <div slot="Fußzeile">
        <el-Schaltfläche
          @click="Bild zeichnen"
          Symbol="el-icon-Kamera"
          Größe="klein">
          Machen Sie ein Foto</el-button>
        <el-Schaltfläche
          v-if="os"
          @click="Kompetenz erhalten"
          Symbol = "el-icon-video-camera"
          Größe="klein">
          Kamera öffnen</el-button>
        <el-Schaltfläche
          v-sonst
          @click="Navigator stoppen"
          Symbol="el-icon-switch-button"
          Größe="klein">
          Kamera schließen</el-button>
        <el-Schaltfläche
          @click="Leinwand zurücksetzen"
          Symbol="el-icon-refresh"
          Größe="klein">
          Zurücksetzen</el-button>
        <el-Schaltfläche
          @click="beiAbbrechen"
          Symbol = "el-Symbol-Kreis-schließen"
          Größe="klein">
          Fertig</el-button>
   </div>
</el-dialog>

Als nächstes schauen wir uns den JS-Code an. Ich habe die unnötigen Teile gelöscht, da es sich um Unit-Projektprobleme handelt. Es tut mir wirklich leid.

<Skript>
Standard exportieren {
  Name: "XXX",
  Daten() {
    zurückkehren {
      sichtbar: false, //Popup wird geladen: false, //Upload-Button wird geladen os: false, //Kameraschalter steuern thisVideo: null,
      dieserKontext: null,
      thisCancas: null,
      Videobreite: 500,
      Videohöhe: 400,
      postOptions:[],
      CertCtl:'',
      // Maskenebene wird geladen: true,
      // Array-IDs auswählen: [],
      // Nicht-Single deaktivieren Single: true,
      // Nicht mehrfach, Mehrfach deaktivieren: true,
      //Gesamtzahl der Einträge: 0,
      // Projektpersonaltabellendaten akworkerList: [],
      //Datenwörterbuch des Worker-Typs workerTypeOptions:[],
      // Titel der Popup-Ebene: "",
      // Ob die Popup-Ebene geöffnet angezeigt werden soll: false,
      // Abfrageparameter queryParams: {
        Seitennummer: 1,
        Seitengröße: 10,
        imgSrc:undefiniert,
      },
      // Formularparameter form: {},
      // Formularvalidierungsregeln: {
      }
    };
  },
  erstellt() {
   
  },
  Methoden: {
    /*Rufen Sie die Kamera auf, um mit der Aufnahme von Bildern zu beginnen*/
    beimNehmen() {
      dies.sichtbar = wahr;
      dies.getCompetence();
    },
    beiAbbrechen() {
      dies.sichtbar = falsch;
     /* dies.resetCanvas();*/
      dies.stopNavigator();
    },
    //Kameraberechtigung aufrufen getCompetence() {
      //Der DOM-Knoten kann erst nach dem Rendern im Modell abgerufen werden. Der DOM-Knoten kann nicht direkt im Modell abgerufen werden. this.$nextTick(() => {
        const _this = dies;
        this.os = false; //Schalter zum Schließen der Kamera this.thisCancas = document.getElementById('canvasCamera');
        dies.thisContext = dies.thisCancas.getContext('2d');
        dies.thisVideo = document.getElementById('videoCamera');
        // Ältere Browser unterstützen MediaDevices möglicherweise überhaupt nicht, daher setzen wir zuerst ein leeres Objekt if (navigator.mediaDevices === undefined) {
          navigator.menavigatordiaDevices = {}
        }
        // Einige Browser implementieren teilweise MediaDevices und wir können nicht einfach ein Objekt // mit getUserMedia zuweisen, weil dies vorhandene Eigenschaften überschreiben würde.
        // Falls die Eigenschaft getUserMedia fehlt, fügen Sie sie hier hinzu.
        wenn (navigator.mediaDevices.getUserMedia === undefiniert) {
          navigator.mediaDevices.getUserMedia = Funktion (Einschränkungen) {
            // Zuerst das vorhandene getUserMedia abrufen (falls vorhanden)
            let getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.getUserMedia;
            // Einige Browser unterstützen dies nicht und geben eine Fehlermeldung zurück // Halten Sie die Schnittstelle konsistent if (!getUserMedia) {
              return Promise.reject(new Error('getUserMedia ist in diesem Browser nicht implementiert'))
            }
            // Andernfalls schließen Sie den Aufruf des alten navigator.getUserMedia mit einem Promise ab.
            returniere neues Promise(Funktion (auflösen, ablehnen) {
              getUserMedia.call(Navigator, Einschränkungen, Auflösen, Ablehnen)
            })
          }
        }
        const-Einschränkungen = {
          Audio: falsch,
          Video: {Breite: _this.videoWidth, Höhe: _this.videoHeight, Transformieren: 'scaleX(-1)'}
        };
        navigator.mediaDevices.getUserMedia(Einschränkungen).dann(Funktion (Stream) {
          // Ältere Browser haben möglicherweise kein srcObject
          wenn ('srcObject' in _this.thisVideo) {
            _this.thisVideo.srcObject = Strom
          } anders {
            // Vermeiden Sie die Verwendung in neueren Browsern, da es veraltet ist.
            _this.thisVideo.src = Fenster.URL.createObjectURL(Stream)
          }
          _this.thisVideo.onloadedmetadata = Funktion (e) {
            _dieses.diesesVideo.abspielen()
          }
        }).catch(err => {
          dies.$benachrichtigen({
            Titel: 'Warnung',
            Meldung: „Die Kameraberechtigung ist nicht aktiviert oder die Browserversion ist inkompatibel.“
            Typ: "Warnung"
          });
        });
      });
    },
    //Bild zeichnen drawImage() {
      // Klicken, Leinwandzeichnung this.thisContext.drawImage(this.thisVideo, 0, 0, this.videoWidth, this.videoHeight);
      // Holen Sie sich den Base64-Link des Bildes this.imgSrc = this.thisCancas.toDataURL('image/png');
      /*const imgSrc=diese.imgSrc;*/
    },
    // Leinwand löschen clearCanvas(id) {
      sei c = document.getElementById(id);
      let cxt = c.getContext("2d");
      cxt.clearRect(0, 0, c.Breite, c.Höhe);
    },
    //Setzt die Leinwand zurück resetCanvas() {
      dies.imgSrc = "";
      dies.clearCanvas('canvasCamera');
    },
    //Kamera schließen stopNavigator() {
      wenn (dieses.diesesVideo && dieses.diesesVideo !== null) {
        dies.thisVideo.srcObject.getTracks()[0].stop();
        this.os = true; //Schalter zum Öffnen der Kamera}
    },
  /*Rufe die Kamera, um Bilder aufzunehmen*/
  }
};
</Skript>

Hier wurde dieser Artikel geteilt. Wenn etwas falsch ist, hoffe ich, dass Sie mir weitere Ratschläge geben können. Wenn es Ähnlichkeiten gibt, kontaktieren Sie mich bitte, um sie zu ändern und zu löschen. Vielen Dank

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 ruft die PC-Kamera auf, um die Fotofunktion zu realisieren
  • Vue ruft die Computerkamera 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

<<:  Automatisierter Docker-Build – Diagramm des Implementierungsprozesses für automatisierte Builds

>>:  Detaillierte Erklärung des Unterschieds zwischen MySQL null und nicht null und null und leerem Wert ''''

Artikel empfehlen

Empfohlene Tipps für Web-Frontend-Ingenieure

Lassen Sie uns zunächst über den Wert von Web-Fro...

Tutorial zur HTML-Tabellenauszeichnung (48): CSS-modifizierte Tabelle

<br />Sehen wir uns nun an, wie Sie die CSS-...

Detaillierte Erläuterung der allgemeinen Schritte zur SQL-Anweisungsoptimierung

Vorwort In diesem Artikel erfahren Sie hauptsächl...

JavaScript-Dokumentobjektmodell DOM

Inhaltsverzeichnis 1. JavaScript kann alle HTML-E...

Detaillierte Erläuterung der MySQL-Transaktionsverwaltungsvorgänge

Dieser Artikel beschreibt die MySQL-Transaktionsv...

jQuery benutzerdefinierter Lupeneffekt

In diesem Artikelbeispiel wird der spezifische Co...

Markup-Validierung für Doctype

Aber vor kurzem habe ich festgestellt, dass die Ve...

So implementieren Sie das Rasterlayout mit Intervallen perfekt auf der Seite

Typische Layoutbeispiele Wie im obigen Bild gezei...

Verwenden Sie „overflow: hidden“, um Seiten-Bildlaufleisten zu deaktivieren

Code kopieren Der Code lautet wie folgt: html { Ü...

Beispiele für einige Verwendungstipps für META-Tags in HTML

HTML-Meta-Tag HTML-Meta-Tags können verwendet wer...

Eine kurze Diskussion über die binäre Familie von JS

Inhaltsverzeichnis Überblick Klecks Blob in Aktio...

MySQL 5.7.17 Installations- und Konfigurations-Tutorial unter Linux (Ubuntu)

Vorwort Ich habe MySQL 5.6 bereits installiert. D...