Eine einfache Möglichkeit, die Drag-Screenshot-Funktion von Vue zu implementieren

Eine einfache Möglichkeit, die Drag-Screenshot-Funktion von Vue zu implementieren

Ziehen Sie die Maus, um einen Screenshot der Seite zu erstellen (Sie können den Screenshot auch in einen angegebenen Bereich ziehen)

1. Installieren Sie html2canvas und vue-cropper

npm i html2canvas --save //Wird verwendet, um den angegebenen Bereich in ein Bild umzuwandeln npm i vue-cropper -S //Bild zuschneiden

2. Registrieren Sie die Vue-Cropper-Komponente in main.js

Importiere VueCropper von „vue-cropper“
Vue.use(VueCropper)

3. Einführung von html2canvas in die Seite

  importiere html2canvas von "html2canvas"
  Standard exportieren{
  }

4. Code-Zerlegung

1. Konvertieren Sie den angegebenen Bereich in ein Bild

dies.$nextTick(()=>{
   html2canvas(Dokument.Body,{}).dann(Canvas => {    
     let dataURL = canvas.toDataURL("bild/png");
     this.uploadImg = Daten-URL
     dies.laden = wahr
   });
 })

Hier wird die gesamte Body-Seite in ein Bild umgewandelt, um Daten im Base64-Format zu erhalten, und andere Bereiche erhalten direkt Klasse oder ID

2. Ziehen Sie das generierte Bild, um einen Screenshot zu machen

<Vorlage>
	<div Klasse="Pop_Alarm" v-if="Anzeigen">
	   <vueCropper
	      @mouseenter.native="Eingeben"
	      @mouseleave.native="verlassen"
	      ref="Beschneider"
	      :img="Bild hochladen"
	      :Ausgabegröße="Option.Größe"
	      :Ausgabetyp="Option.Ausgabetyp"
	      :info="wahr"
	      :full="Option.full"
	      :kannVerschieben="Option.kannVerschieben"
	      :kannBox verschieben="Option.kannBox verschieben"
	      :original="Option.original"
	      :autoCrop="Option.autoCrop"
	      :fest="Option.fest"
	      :festeNummer="Option.festeNummer"
	      :centerBox="Option.centerBox"
	      :infoTrue="option.infoTrue"
	      :fixedBox="Option.fixedBox"
	      Stil="Hintergrundbild:keines"
	    ></vueCropper>
	    <div Klasse="btn_box">
	    	<div @click="save">Screenshot bestätigen</div>
	   	    <div @click="close">Abbrechen</div>
	    </div>
	 </div>
 </Vorlage>
<Skript>
 Standard exportieren{
   Daten(){
       Option: {
          info: true, // Größeninformationen zum ZuschneidefeldoutputSize: 0.8, // Qualität des zugeschnittenen BildesoutputType: "jpeg", // Format des zugeschnittenen BildescanScale: false, // ob das Bild eine Skalierung mit dem Scrollrad zulässtautoCrop: false, // ob standardmäßig ein Screenshot-Feld generiert werden sollfixedBox: false, // feste Größe des Screenshot-Felds kann nicht geändert werdenfixed: false, // ob ein festes Seitenverhältnis des Screenshot-Felds aktiviert werden sollfixedNumber: [7, 5], // Seitenverhältnis des Screenshot-Feldsfull: true, // ob der Screenshot im Original-Seitenverhältnis ausgegeben werden sollcanMove: false, // kann das Originalbild verschoben werdencanMoveBox: true, // ob das Screenshot-Feld gezogen werden kannoriginal: false, // hochgeladenes Bild wird im Original-Seitenverhältnis gerendertcenterBox: false, // ob das Screenshot-Feld auf das Bild beschränkt istinfoTrue: true // true, um die tatsächliche Breite und Höhe des Ausgabebilds anzuzeigenfalse, um die Breite und Höhe des Screenshot-Felds anzuzeigen},
        Bild hochladen:"",
        anzeigen:false
   },
   Methoden:{
     eingeben() {
       wenn (this.uploadImg == "") {
         zurückkehren;
       }
       this.$refs.cropper.startCrop(); //Mit dem Zuschneiden beginnen},
     verlassen() {
       this.$refs.cropper.stopCrop();//Zuschneiden beenden},
     save() { //Screenshot bestätigen this.$refs.cropper.getCropData((data) => { //Daten des Screenshots im Base64-Format abrufen console.log(data)
          this.show = falsch
        })
        // this.$refs.cropper.getCropBlob(data => { //Blob-Formatdaten des Screenshots abrufen// this.cutImg = data;
        // });
      },
      close(){ //Abbrechen this.show = false
      }
   }
 }
 </Skript>

5. Alle Codes

<Vorlage>
   <div>
     <div @click="tailoring">Schnitt</div>
	<!--Schreiben Sie weiterhin den restlichen Inhalt der Seite. Pop_alert kann zur Verwendung in eine Komponente gekapselt werden-->
	
     <div Klasse="Pop_Alarm" v-if="Anzeigen">
	   <vueCropper
	      @mouseenter.native="Eingeben"
	      @mouseleave.native="verlassen"
	      ref="Beschneider"
	      :img="Bild hochladen"
	      :Ausgabegröße="Option.Größe"
	      :Ausgabetyp="Option.Ausgabetyp"
	      :info="wahr"
	      :full="Option.full"
	      :kannVerschieben="Option.kannVerschieben"
	      :kannBox verschieben="Option.kannBox verschieben"
	      :original="Option.original"
	      :autoCrop="Option.autoCrop"
	      :fest="Option.fest"
	      :festeNummer="Option.festeNummer"
	      :centerBox="Option.centerBox"
	      :infoTrue="option.infoTrue"
	      :fixedBox="Option.fixedBox"
	      Stil="Hintergrundbild:keines"
	    ></vueCropper>
	    <div Klasse="btn_box">
	    	<div @click="save">Screenshot bestätigen</div>
	   	    <div @click="close">Abbrechen</div>
	    </div>
	 </div>
   </div>
</Vorlage>
<Skript>
importiere html2canvas von "html2canvas"
 Standard exportieren{
  Daten(){
   zurückkehren {
     Option: {
          info: true, // Größeninformationen zum ZuschneidefeldoutputSize: 0.8, // Qualität des zugeschnittenen BildesoutputType: "jpeg", // Format des zugeschnittenen BildescanScale: false, // ob das Bild eine Skalierung mit dem Scrollrad zulässtautoCrop: false, // ob standardmäßig ein Screenshot-Feld generiert werden sollfixedBox: false, // feste Größe des Screenshot-Felds kann nicht geändert werdenfixed: false, // ob ein festes Seitenverhältnis des Screenshot-Felds aktiviert werden sollfixedNumber: [7, 5], // Seitenverhältnis des Screenshot-Feldsfull: true, // ob der Screenshot im Original-Seitenverhältnis ausgegeben werden sollcanMove: false, // kann das Originalbild verschoben werdencanMoveBox: true, // ob das Screenshot-Feld gezogen werden kannoriginal: false, // hochgeladenes Bild wird im Original-Seitenverhältnis gerendertcenterBox: false, // ob das Screenshot-Feld auf das Bild beschränkt istinfoTrue: true // true, um die tatsächliche Breite und Höhe des Ausgabebilds anzuzeigenfalse, um die Breite und Höhe des Screenshot-Felds anzuzeigen},
        Bild hochladen:"",
        anzeigen:false
   }
  },
  Methoden:{
    Schneidern(){ //Schneide dies.$nextTick(()=>{
           html2canvas(Dokument.Body,{}).dann(Canvas => {
             let dataURL = canvas.toDataURL("bild/png");
             this.uploadImg = Daten-URL
             dies.show = wahr
           });
       })
    },
    eingeben() {
       wenn (this.uploadImg == "") {
         zurückkehren;
       }
       this.$refs.cropper.startCrop(); //Mit dem Zuschneiden beginnen},
     verlassen() {
       this.$refs.cropper.stopCrop();//Zuschneiden beenden},
     save() { //Screenshot bestätigen this.$refs.cropper.getCropData((data) => { //Daten des Screenshots im Base64-Format abrufen console.log(data)
          this.show = falsch
        })
        // this.$refs.cropper.getCropBlob(data => { //Blob-Formatdaten des Screenshots abrufen// this.cutImg = data;
        // });
      },
      close(){ //Abbrechen this.show = false
      }
   }
 }
</Skript>
<Stil>
	.pop_alert{
      Breite: 100 %;
	  Höhe: 100%;
	  Position: absolut;
	  oben: 0;
	  links: 0;
	  Rand: 1px gestrichelt rot;
	  Hintergrundfarbe: #000000;
    }
    .btn_box{
        Position: absolut;
	    oben: 0;
	    Farbe: rot;
	    rechts: 0;
	    Schriftgröße: 30px;
	    Anzeige: Flex;
        Elemente ausrichten: zentrieren;
	    Z-Index: 6666;
    }
</Stil>

Rendern

Zusammenfassen

Dies ist das Ende dieses Artikels über die Implementierung der Vue Drag-Screenshot-Funktion. Weitere relevante Inhalte zur Vue Drag-Screenshot-Funktion finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Drag-Effekt basierend auf Vue realisieren
  • Implementierung einer Drag & Drop-Funktion basierend auf Vue
  • Beispiel für die Implementierung eines Drag & Drop-Effekts mit Vue.js
  • Vue.js implementiert das zufällige Ziehen von Bildern
  • Vue implementiert Div Drag & Drop
  • Beispiel für eine benutzerdefinierte Drag-Funktion in Vue
  • Vue implementiert unregelmäßige Screenshots

<<:  Detaillierte Erläuterung des Problems der gemischten Verwendung von Limit- und Summenfunktionen in MySQL

>>:  Detaillierte Erklärung zur Verwendung des Linux-Befehls Traceroute

Artikel empfehlen

Verwendung des Vuex-Namespace

Inhaltsverzeichnis Da Vuex einen einzelnen Zustan...

Tutorial zur Installation von Elasticsearch 7.6.2 in Docker

Docker installieren Sie müssen Docker installiere...

Die neueste Installations- und Konfigurationsmethode für MySQL-5.7.21

1. Entpacken Sie das heruntergeladene MySQL-Kompr...

Grundlegendes zur CSS-Eigenschaft „transform-origin“

Vorwort Ich habe vor kurzem eine Feuerwerksanimat...

HTML 5 Vorschau

<br />Original: http://www.alistapart.com/ar...

Beispiel für die Implementierung einer To-Do-Anwendung mit Vue

Hintergrund Zunächst möchte ich sagen, dass ich k...

Praxis des El-Cascader-Kaskadenselektors in ElementUI

Inhaltsverzeichnis 1. Wirkung 2. Hauptcode 1. Wir...

Centos7.3 startet oder führt beim Booten automatisch angegebene Befehle aus

In CentOS7 wurden die Berechtigungen der Datei /e...

Docker- und Portainer-Konfigurationsmethoden unter Linux

1. Installieren und verwenden Sie Docer CE Dieser...

So gehen Sie mit Zeitzonenproblemen in Docker um

Hintergrund Als ich in diesen beiden Tagen Docker...