Wissen Sie, wie Sie mit Vue-Cropper Bilder in Vue zuschneiden?

Wissen Sie, wie Sie mit Vue-Cropper Bilder in Vue zuschneiden?

Offizielle Website:

https://github.com/xyxiao001/vue-cropper

1. Installation:

npm installiere vue-cropper 

oder

Garn hinzufügen Vue-Cropper

2. Verwendung:

Importiere VueCropper von „vue-cropper“

Richten Sie component ein:

Standard exportieren {
  Komponenten:
    VueCropper
  }
}

In template einfügen: (ein Div wird außerhalb benötigt, um die Größe der Plug-In-Anzeige festzulegen)

<vueCropper
      ref="Beschneider"
      :img="Option.img"
      :Ausgabegröße="Option.Größe"
      :Ausgabetyp="Option.Ausgabetyp"
></vueCropper>
    Daten(){
      zurückkehren {
         Option:{
            img: 'imgUrl', // URL oder Base64 von img
            Größe: 1,
            Ausgabetyp: "png",
         }
      }
    }

3. Integrierte Methoden:

Name Funktion Standardwert Optionale Werte
img Die Adresse des zugeschnittenen Bildes Null URL-Adresse / Base64 / Blob
Ausgabegröße Die Qualität des zugeschnittenen Bildes 1 0,1 - 1
Ausgabetyp Die Adresse des zugeschnittenen Bildes jpg (jpg muss in jpeg übergeben werden) jpeg / png / web

Integrierte Methode : Rufen Sie das Plugin über this.$refs.cropper auf.

this.$refs.cropper.startCrop() beginnt mit der Aufnahme von Screenshots (wenn der Screenshot-Rahmen nicht festgelegt ist, wird der Screenshot-Rahmen hierdurch gestartet)

this.$refs.cropper.stopCrop() stoppt die Aufnahme von Screenshots

this.$refs.cropper.clearCrop() Screenshot löschen

this.$refs.cropper.getCropData() Holen Sie sich die Screenshot-Informationen (holen Sie sich die Screenshot-URL oder Base64)

    // Holen Sie sich die Base64-Daten des Screenshots this.$refs.cropper.getCropData((data) => {
      // etwas tun
      console.log(Daten)
    })
    // Holen Sie sich die Screenshot-Blob-Daten this.$refs.cropper.getCropBlob((data) => {
      // etwas tun
      console.log(Daten)
    })

4. Verwendung:

<Vorlage>
  <div>
    <el-dialog title="Bild zuschneiden" :visible.sync="show" append-to-body width="950px" center>
      <div Klasse="cropper-content">
        <div Klasse="cropper-box">
          <div Klasse="cropper">
            <vue-cropper ref = "cropper": img = "option.img": outputSize = "option.outputSize": outputType = "option.outputType": info = "option.info": canscale = "option.canscale": autocropight "optimal.: autocropwith": autocropwid = "option": autocropwid = "option": autocropwid = "option": autocropwid = "option": autocropwid = "option": autocropwid = "option": autocropwid = "option": autocropwid = "option": autocropwid = "option: = "Option.Fixed": FixedNumber = "Option.FixedNumber": full = "option.full": fixedbox = "option.fixedBox": canmove = "option.canmove": canMoveBox AximgSize ": enlarge =" option.enlarge ": modus =" option.mode " @realtime =" realtime " @imgload =" imgload ">
            </vue-cropper>
          </div>
          <!--Untere Schaltfläche für Bedienwerkzeug-->
          <div Klasse="footer-btn">
            <div Klasse="scope-btn">
              <label class="btn" for="uploads">Wählen Sie ein Bild aus</label>
              <input type="file" id="uploads" style="position:absolute; clip:rect(0 0 0 0);" akzeptieren="bild/png, bild/jpeg, bild/gif, bild/jpg" @change="selectImg($event)">
              <el-button size="mini" type="danger" plain icon="el-icon-zoom-in" @click="changeScale(1)">Vergrößern</el-button>
              <el-button size="mini" type="danger" plain icon="el-icon-zoom-out" @click="changeScale(-1)">Verkleinern</el-button>
              <el-button size="mini" type="danger" plain @click="rotateLeft">↺ Nach links drehen</el-button>
              <el-button size="mini" type="danger" plain @click="rotateRight">↻ Nach rechts drehen</el-button>
            </div>
            <div Klasse="upload-btn">
              <el-button size="mini" type="success" @click="uploadImg('blob')">Bild hochladen<i class="el-icon-upload"></i></el-button>
            </div>
          </div>
        </div>
        <!--Effektbild-Vorschau-->
        <div Klasse="Vorschau anzeigen">
          <div :style="Vorschau.div" class="Vorschau">
            <img :src="vorschau.url" :style="vorschau.img">
          </div>
        </div>
      </div>
    </el-dialog>
  </div>
</Vorlage>
<Skript>
importiere { VueCropper } von 'vue-cropper'
Standard exportieren {
  Name: "CropperImage",
  Komponenten:
    VueCropper
  },
  Daten () {
    zurückkehren {
      anzeigen: this.visible,
      Name: dieser.Name,
      Vorschau: {},
      Option: {
        img: '', //Adresse des zugeschnittenen Bildes outputSize: 1, //Qualität des zugeschnittenen Bildes (optional 0,1 - 1)
        Ausgabetyp: „jpeg“, //zuschneiden, um das Bildformat zu generieren (jpeg || png || webp)
        :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::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 :::::::::::
    };
  },
  Requisiten: {
    sichtbar:
      Typ: Boolean,
      Standard: false
    },
    Name:
      Typ: Zeichenfolge,
      Standard: ''
    }
  },
  betrachten:
    sichtbar () {
      dies.zeigen = dies.sichtbar
    }
  },
  Methoden: {
    // Initialisierungsfunktion imgLoad (msg) {
    },
    //Bildskalierung changeScale (num) {
      Zahl = Zahl || 1
      dies.$refs.cropper.changeScale(num)
    },
    //Nach links drehen rotateLeft () {
      dies.$refs.cropper.rotateLeft()
    },
    //Nach rechts drehen rotateRight () {
      dies.$refs.cropper.rotateRight()
    },
    //Echtzeit-Vorschau-Funktion realTime (data) {
      this.previews = Daten
    },
    //Wähle ein Bild aus selectImg (e) {
      let Datei = e.Zieldateien[0]
      wenn (!/\.(jpg|jpeg|png|JPG|PNG)$/.test(e.ziel.wert)) {
        diese.$nachricht({
          Meldung: „Anforderungen an Bildtypen: jpeg, jpg, png“,
          Typ: „Fehler“
        });
        return false
      }
      //In Blob konvertieren
      let reader = neuer FileReader()
      reader.onload = (e) => {
        Daten lassen
        wenn (Typ von e.Ziel.Ergebnis === 'Objekt') {
          Daten = Fenster.URL.createObjectURL(neuer Blob([e.target.result]))
        } anders {
          Daten = e.Ziel.Ergebnis
        }
        diese.option.img = Daten
      }
      //In Base64 konvertieren
      reader.readAsDataURL(Datei)
    },
    //Bild hochladen uploadImg (Typ) {
      lass _dies = dies
      wenn (Typ === 'Blob') {
        // Holen Sie sich die Screenshot-Blob-Daten this.$refs.cropper.getCropBlob(async (data) => {
          let formData = neue FormData();
          formData.append('Datei', Daten, neues Datum().getTime() + '.png')
          // Rufen Sie axios zum Hochladen auf let { data: res } = await _this.$http.post(`${msBaseUrl}common-tools-web/file/upload/image`, formData)
          wenn (res.code === 200) {
            _diese.$nachricht({
              Nachricht: res.desc,
              Typ: „Erfolg“
            });
            let data = res.result
            let imgInfo = {
              Name: Datenname,
              ID: Daten-ID,
              URL: Daten.URL
            };
            _this.$emit('uploadImgSuccess', imgInfo);
          } anders {
            _diese.$nachricht({
              Meldung: ,,Fehler beim Dateidienst, bitte kontaktieren Sie den Administrator!‘‘ ',
              Typ: „Fehler“
            })
          }
        })
      }
    }
  }
}
</Skript>
<style scoped lang="weniger">
.cropper-Inhalt {
  Anzeige: Flex;
  Anzeige: -webkit-flex;
  Inhalt ausrichten: Flex-Ende;
  .cropper-box {
    biegen: 1;
    Breite: 100 %;
    .cropper {
      Breite: automatisch;
      Höhe: 300px;
    }
  }
  .show-preview {
    biegen: 1;
    -webkit-flex: 1;
    Anzeige: Flex;
    Anzeige: -webkit-flex;
    Inhalt ausrichten: zentriert;
    .Vorschau {
      Überlauf: versteckt;
      Rand: 1px durchgezogen #67c23a;
      Hintergrund: #cccccc;
    }
  }
}
.footer-btn {
  Rand oben: 30px;
  Anzeige: Flex;
  Anzeige: -webkit-flex;
  Inhalt ausrichten: Flex-Ende;
  .scope-btn {
    Anzeige: Flex;
    Anzeige: -webkit-flex;
    Inhalt ausrichten: Abstand dazwischen;
    Polsterung rechts: 10px;
  }
  .upload-btn {
    biegen: 1;
    -webkit-flex: 1;
    Anzeige: Flex;
    Anzeige: -webkit-flex;
    Inhalt ausrichten: zentriert;
  }
  .btn {
    Gliederung: keine;
    Anzeige: Inline-Block;
    Zeilenhöhe: 1;
    Leerzeichen: Nowrap;
    Cursor: Zeiger;
    -webkit-auftritt: keines;
    Textausrichtung: zentriert;
    -webkit-box-sizing: Rahmenbox;
    Box-Größe: Rahmenbox;
    Umriss: 0;
    -Webkit-Übergang: 0,1 s;
    Übergang: 0,1 s;
    Schriftstärke: 500;
    Polsterung: 8px 15px;
    Schriftgröße: 12px;
    Rahmenradius: 3px;
    Farbe: #fff;
    Hintergrundfarbe: #409eff;
    Rahmenfarbe: #409eff;
    Rand rechts: 10px;
  }
}
</Stil>

Wirkung:

Bildbeschreibung hier einfügen

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalt auf 123WORDPRESS.COM lesen können!

Das könnte Sie auch interessieren:
  • Springboot + Vue-Cropper realisiert den Effekt des Avatar-Ausschneidens und -Hochladens
  • Die Komponente vue-cropper realisiert das Zuschneiden und Hochladen von Bildern
  • Das Vue-Cropper-Plugin realisiert die Kapselung der Bildaufnahme- und Upload-Komponente
  • Detaillierte Erklärung zur Verwendung von vue-cropper, einem Vue-Plugin zum Zuschneiden von Bildern
  • Vue-Cropper Die Grundprinzipien und Ideen des Bildzuschneidens
  • Kapselung von Vue basierend auf cropper.js zur Realisierung der Online-Komponentenfunktion zum Zuschneiden von Bildern

<<:  Detaillierte Erläuterung der Lösung, um den Inhalt im Container im Flex-Layout zu halten

>>:  Die Aktualisierung der Seite zur Formularübermittlung springt nicht

Artikel empfehlen

Detaillierter Prozess der NTP-Serverkonfiguration unter Linux

Inhaltsverzeichnis 1. Umgebungskonfiguration 1.NT...

Centos8 (Minimalinstallation) Tutorial zur Installation von Python3.8+pip

Nachdem ich die Installation von Python8 minimier...

Häufig verwendete höherwertige Funktionen und umfassende Beispiele in Vue

1. Häufig verwendete höherwertige Funktionen von ...

Kurze Analyse von MySQL Union und Union All

In der Datenbank führen sowohl die Schlüsselwörte...

So wird eine Select-Anweisung in MySQL ausgeführt

Inhaltsverzeichnis 1. MySQL aus einer Makroperspe...

MySQL-Platzhalter (erweiterte SQL-Filterung)

Inhaltsverzeichnis Lassen Sie uns zunächst kurz P...

64-Bit-CentOs7-Quellcodeinstallation MySQL-5.6.35 Prozessfreigabe

Installieren Sie zuerst die abhängigen Pakete, um...

Der Browser der Betaversion IE9 unterstützt HTML5/CSS3

Manche Leute sagen, dass IE9 die zweite Revolutio...

So deinstallieren Sie das native OpenJDK von Linux und installieren Sun JDK

Siehe: https://www.jb51.net/article/112612.htm Üb...

MySQL NULL-Datenkonvertierungsmethode (unbedingt lesen)

Wenn Sie MySQL zum Abfragen der Datenbank verwend...