Vue verwendet Plug-Ins, um Bilder proportional zuzuschneiden

Vue verwendet Plug-Ins, um Bilder proportional zuzuschneiden

In diesem Artikel wird der spezifische Code von Vue mit Plug-Ins zum proportionalen Zuschneiden von Bildern zu Ihrer Information beschrieben. Der spezifische Inhalt ist wie folgt

1. Verwenden Sie das Plugin - vueCropper

Installieren Sie das Plugin: npm install vue-cropper
Kombiniert mit der Upload-Komponente „el-element“

2. Beispiel:

Hauptseite

Daten(){
 zurückkehren {
     formData:{
        currentBannerImg:""
     },
     istShowCropper:false,
 }
}
<el-hochladen
      Klasse = "Avatar-Uploader"
      Listentyp = "Bildkarte"
      Aktion=""
      akzeptieren=".jpg, .jpeg, .png"
      :mit-Anmeldeinformationen="true"
      :on-change="DateiÄnderungsBanner"
      :auto-upload="false"
      :Dateiliste anzeigen="false"
    >
    <div Klasse="imgBoX">
        <img class="bannerImg" v-if="formData.currentBannerImg" title="Zum Ändern klicken" :src="formData.currentBannerImg" alt="" />
        <i class="el-icon-delete delImg" v-if="formData.currentBannerImg" title="Löschen"></i>
        <i v-if="!formData.currentBannerImg" slot="default" class="el-icon-plus"></i>
      </div>
      <div slot="tip" class="el-upload__tip">Es können nur die Formate JPG, JPEG und PNG hochgeladen werden und die einzelne Datei darf nicht größer als 10 MB sein</div>
</el-upload>

//Laden Sie das Bild hoch und schneiden Sie es nach Erfolg zu. async fileChangeBanner(file, fileList) {
      const fileType = file.name.substring(file.name.lastIndexOf(".") + 1);
      const fileTypeArr = ["jpg", "jpeg", "png", "JPG", "JPEG", "PNG"];
      wenn (fileTypeArr.indexOf(fileType) < 0) {
        this.$alert("Bitte laden Sie Bilder im JPG-, JPEG- oder PNG-Format hoch!", "Systemaufforderung", {
          confirmButtonText: "Bestätigen"
        });
        fileList.splice(fileList.length - 1);
        zurückkehren;
      }
      // Größenbeschränkung const isLt2M = file.size / 1024 / 1024 < this.$FileSize;
      wenn (!isLt2M) {
        this.$alert(`Die Größe der hochgeladenen Datei darf ${this.$FileSize}MB nicht überschreiten!`, "Systemaufforderung", {
          confirmButtonText: "Bestätigen"
        });
        fileList.splice(fileList.length - 1);
        zurückkehren;
      }
      // Den Zuschneideteil hinzufügen this.isShowCropper = true;
      dies.$nextTick(() => {
        dies.$refs.vueCropperDialog.open(Datei);
      });
    },

vueCropperDialog wird als Komponente eingeführt

<vueCropperDialog @cutImgEnter="cutImgEnter" v-if="isShowCropper" ref="vueCropperDialog"></vueCropperDialog>

vueCropperDialog.vue

<!-- -->
<Vorlage>
  <!-- vueCropper Implementierung zum Zuschneiden von Bildern -->
  <el-dialog title="Bild zuschneiden" :visible.sync="dialogVisible" an Body anhängen>
    <div Klasse="cropper-content">
      <div Klasse="cropper" Stil="text-align:center">
        <vueCropper
          ref="Beschneider"
          :img="Option.img"
          :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"
        ></vueCropper>
      </div>
    </div>
    <div slot="Fußzeile" class="dialog-footer btnBox">
      <div>
        <el-button icon="el-icon-refresh-left" @click="turnLeftOrRight('left')">Nach links drehen</el-button>
        <el-button icon="el-icon-refresh-right" @click="turnLeftOrRight('right')">Nach rechts drehen</el-button>
      </div>
      <div>
        <el-button @click="dialogVisible = false">Abbrechen</el-button>
        <el-button type="primary" @click="finish" :loading="loading">Bestätigen</el-button>
      </div>
    </div>
  </el-dialog>
</Vorlage>

<Skript>
Standard exportieren {
  Daten() {
    zurückkehren {
      Dateiinfo:"",
      dialogVisible: false,
      // Grundlegende Konfigurationsoption für die Zuschneidekomponente
      Option: {
        :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::3s::::::333:33333333333333333333ag33333333333333333333333333333 es333333333333333333333333333333 es33 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann dann dann dann aber33333333333333333333 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 nicht3 dann3 dann3 aber3 dann3 nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht nicht dann nichtie dasen aber aber abersossoss aberstens aberstensss aberten aber abers :::::::::::
      picsList: [], //Auf der Seite angezeigtes Array // Verhindert das Laden doppelter Übermittlungen: false
    };
  },
  Methoden: {
    öffnen(Datei) {
      this.fileinfo = Datei;
      diese.option.img = datei.url;
      this.dialogVisible = true;
    },
    blobToFile(derBlob, Datei) {
      const files = neues Fenster.Datei([derBlob], Datei.Name, { Typ: derBlob.Typ });
      Dateien zurückgeben;
    },
    //Linksdrehung turnLeftOrRight(Typ) {
      wenn (Typ == "links") {
        dies.$refs.cropper.rotateLeft();
      } anders {
        dies.$refs.cropper.rotateRight();
      }
    },
    // Klicken Sie hier, um zuzuschneiden. In diesem Schritt wird die verarbeitete Adresse abgerufen. finish() {
      dies.$refs.cropper.getCropBlob((data) => {
        dies.laden = wahr;
        const changeFile = this.blobToFile(Daten, this.fileinfo);
        const fileUrl = Fenster.URL.createObjectURL(Daten);
        //Rückruf nach erfolgreichem Ausschneiden this.$emit("cutImgEnter", changeFile, fielUrl);
        dies.laden = falsch;
        this.dialogVisible = falsch;
      });
    }
  }
};
</Skript>
<style lang="scss" scoped>
// Screenshot.cropper-content {
  .cropper {
    Breite: automatisch;
    Höhe: 300px;
  }
}
.btnBox {
  Anzeige: Flex;
  Elemente ausrichten: zentrieren;
  Inhalt ausrichten: Abstand dazwischen;
}
</Stil>

3. Wirkung

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:
  • Die Komponente vue-cropper realisiert das Zuschneiden und Hochladen von Bildern
  • Vue + Element realisiert Bild-Upload- und Zuschneidefunktionen
  • Vue implementiert eine Funktion zum Zuschneiden und Hochladen von Bildern auf Mobilgeräten
  • Detaillierte Erläuterung der Implementierung der Bildzuschneidefunktion im Vue-Projekt
  • Auf Vue basierende Komponentenfunktion zum Zuschneiden mobiler Bilder
  • Cropper js-Implementierungscode der Bildzuschneide- und Upload-Funktion basierend auf Vue
  • Vue realisiert das Hochladen nach dem Zuschneiden von Bildern
  • Beispiel zum Zuschneiden von Bildern mit Canvas unter Vue
  • Implementierung der Vue-Komponente zum Zuschneiden und Hochladen von Bildern
  • Beispielcode für die Vue-Bildzuschneidekomponente

<<:  MySQL-Schleife fügt zig Millionen Daten ein

>>:  Detailliertes Tutorial zum Veröffentlichen von Springboot-Projekten über das Docker-Plugin in IDEA

Artikel empfehlen

CSS3 Flexible Box Flex, um ein dreispaltiges Layout zu erreichen

Wie der Titel schon sagt: Die Höhe ist bekannt, d...

Gründe und Methoden zum Warten auf die Sperre der Tabellenmetadaten in MySQL

Wenn MySQL DDL-Operationen wie „Alter Table“ ausf...

Implementierung eines geplanten MySQL-Sicherungsskripts unter Windows

Wenn Sie auf einem Windows-Server regelmäßig Date...

Reines CSS3 zum Erstellen eines Beispielcodes für Seitenwechseleffekte

Das, was ich vorher geschrieben habe, ist zu komp...

Design Association: Warum haben Sie am falschen Ort gesucht?

Ich bin vor ein paar Tagen mit dem Bus zur Arbeit...

Beispielanalyse der MySQL-Indexabdeckung

Dieser Artikel beschreibt die MySQL-Indexabdeckun...

Details zu den Überwachungseigenschaften der Uhr in Vue

Inhaltsverzeichnis 1.watch überwacht Änderungen i...

Lassen Sie uns über Destrukturierung in JS ES6 sprechen

Überblick es6 fügt eine neue Möglichkeit hinzu, b...

Detaillierte Erläuterung des MySQL 5.7.9-Shutdown-Syntaxbeispiels

mysql-5.7.9 bietet endlich eine Shutdown-Syntax: ...

Erstellen eines Image-Servers mit FastDFS unter Linux

Inhaltsverzeichnis Serverplanung 1. Systemkompone...

Installieren und konfigurieren Sie SSH in CentOS7

1. Installieren Sie openssh-server yum install -y...