Verwenden Sie Vue-Cropper, um Bilder in Vue-Projekten zuzuschneiden
vueWie beschneide ich Bilder im Projekt? Der folgende Artikel stellt Ihnen vor, wie Sie Vue-Cropper zum Zuschneiden von Bildern verwenden. Ich hoffe, er wird Ihnen hilfreich sein!
Aufgrund der Projektanforderungen ist ein Bildzuschnitt erforderlich. Das vorherige Projekt wurde von Cropper.js implementiert. Da dieses Mal Vue verwendet wird, ist die Verwendung der Vue-Cropper-Komponente sehr einfach, es gibt jedoch viele Fallstricke. (Lernvideo-Sharing: vue-Video-Tutorial
1. Installationnpm install vue-cropper
main.js
import VueCropper from 'vue-cropper' Vue.use(VueCropper)
main.js
<div style="display: flex;justify-content: center;align-items: center;width: 100%;height: 100%;"> <vueCropper @mouseenter.native="enter" @mouseleave.native="leave" ref="cropper" :img="uploadImg" :outputSize="option.size" :outputType="option.outputType" :info="true" :full="option.full" :canMove="option.canMove" :canMoveBox="option.canMoveBox" :original="option.original" :autoCrop="option.autoCrop" :fixed="option.fixed" :fixedNumber="option.fixedNumber" :centerBox="option.centerBox" :infoTrue="option.infoTrue" :fixedBox="option.fixedBox" style="background-image:none" ></vueCropper> </div>
二、图片裁剪
1、引入VueCropper组件,并设置相关的属性。
option: { info: true, // 裁剪框的大小信息 outputSize: 0.8, // 裁剪生成图片的质量 outputType: "jpeg", // 裁剪生成图片的格式 canScale: false, // 图片是否允许滚轮缩放 autoCrop: false, // 是否默认生成截图框 fixedBox: false, // 固定截图框大小 不允许改变 fixed: false, // 是否开启截图框宽高固定比例 fixedNumber: [7, 5], // 截图框的宽高比例 full: true, // 是否输出原图比例的截图 canMove: false, //时候可以移动原图 canMoveBox: true, // 截图框能否拖动 original: false, // 上传图片按照原始比例渲染 centerBox: false, // 截图框是否被限制在图片里面 infoTrue: true // true 为展示真实输出图片宽高 false 展示看到的截图框宽高 }
enter() { if (this.uploadImg == "") { return; } this.$refs.cropper.startCrop(); //开始裁剪 },
❗️默认的裁剪图片的背景带有贼丑的马赛克,其实是它用了一张马赛克的图片做背景,去掉只需在VueCropper上设置去除背景图片的样式style="background-image:none"
.
2、上传完成后鼠标进入VueCropper即可以开始裁剪
在VueCroper上设置@mouseenter.native="enter"
事件(⭐️组件上使用原生事件需要加上native关键字)
leave() { this.$refs.cropper.stopCrop();//停止裁剪 this.$refs.cropper.getCropData(data => { //获取截图的base64格式数据 this.cutImg = data; }); // this.$refs.cropper.getCropBlob(data => { //获取截图的Blob格式数据 // this.cutImg = data; // }); },
3、离开VueCropper即停止裁剪,得到裁剪图片。
在VueCroper上设置@mouseleave.native="leave"
事件
this.$refs.cropper.getCropAxis() //获取截图框基于容器的坐标点 {x1: 174, x2: 131, y1: 86, y2: 58} this.$refs.cropper.cropW //截图框宽 this.$refs.cropper.cropH //截图框高
我这里是离开p就会裁剪,点击裁剪按钮后传递裁剪图片,而不是点击裁剪按钮才裁剪,因为我点击裁剪按钮裁剪的话,拿到的图片并没有裁剪过,我也不知道为什么,就想出了这个办法。
vue-cropper图片裁剪问题
三、将截图框回显到原图上
基本原理:
{ id: 1, name: "姓名", cropInfo: { width: 108, //this.$refs.cropper.cropW height: 56, //this.$refs.cropper.cropH offsetX: 174, //this.$refs.cropper.getCropAxis().x1 offsetY: 86 //this.$refs.cropper.getCropAxis().y1 }
通过上面的方式获取截图框的宽、高和基于容器的坐标点,然后让VueCropper的自动截取框显示出来并设置自动截取框的大小和位置。
以姓名字段为例:
enterCard(refWord) { this.$refs.cropper.goAutoCrop();//重新生成自动裁剪框 this.$nextTick(() => { // if cropped and has position message, update crop box //设置自动裁剪框的宽高和位置 this.$refs.cropper.cropOffsertX = refWord.cropInfo.offsetX; this.$refs.cropper.cropOffsertY = refWord.cropInfo.offsetY; this.$refs.cropper.cropW = refWord.cropInfo.width; this.$refs.cropper.cropH = refWord.cropInfo.height; }); }
1、在"姓名"el-card上设置enter事件<el-card></el-card>
leaveCard() { this.$refs.cropper.clearCrop(); //取消裁剪框 }
2、在所有el-card外层的el-tabs上设置leave事件<el-tabs></el-tabs>
2. Bildzuschnitt

1. Stellen Sie die VueCropper-Komponente vor und legen Sie zugehörige Eigenschaften fest. rrreeerrreee
❗️Der Hintergrund des standardmäßig zugeschnittenen Bildes hat ein hässliches Mosaik. Um es zu entfernen, legen Sie einfach den Stil fest, um das Hintergrundbild auf VueCropperstyle="background" zu entfernen - image:none"
.- 2. Nachdem der Upload abgeschlossen ist, geben Sie die Maus in VueCropper ein, um mit dem Zuschneiden zu beginnen
rrreee
Setzen Sie das Ereignis@mouseenter.native="enter"
in VueCroper (⭐️Um native Ereignisse für die Komponente zu verwenden, müssen Sie das native Schlüsselwort hinzufügen) 3 Stoppen Sie das Zuschneiden, wenn Sie VueCropper verlassen und das zugeschnittene Bild erhalten. -
Setzen Sie das
Hier werde ich zuschneiden, wenn ich p verlasse. Nachdem ich auf die Schaltfläche zum Zuschneiden geklickt habe, übergebe ich das zugeschnittene Bild, anstatt es danach zuzuschneiden Als ich auf die Schaltfläche „Zuschneiden“ klickte, wusste ich nicht, warum, also habe ich mir diese Methode ausgedacht.@mouseleave.native="leave"
-Ereignis auf VueCroper
rrreee Vue-Cropper-Bildzuschneideproblem
3. Echo des Screenshot-Rahmens auf das Originalbild

Grundprinzip:
rrreeeErmitteln Sie die Breite, Höhe und Container-basierten Koordinatenpunkte des Screenshot-Rahmens mit der oben genannten Methode und lassen Sie VueCropper diese dann automatisch erfassen Rahmen Zeigen Sie ihn an und legen Sie die Größe und Position des automatischen Erfassungsrahmens fest. Nehmen Sie das Namensfeld als Beispiel:rrreee
1. Legen Sie das Eingabeereignis auf der El-Karte „Name“<el-card></el-card> 🎜rrreee🎜2. Legen Sie das Urlaubsereignis für alle El-Tabs außerhalb der El-Karte fest <el-tabs></el-tabs>
🎜🎜rrreee 🎜❗️ Achten Sie darauf, das Verlassen-Ereignis nicht auf der El-Karte festzulegen. Andernfalls wird das Zuschneidefeld abgebrochen und neu generiert, wenn Sie die Maus zur nächsten El-Karte bewegen, wodurch die Seite flackert. 🎜🎜🎜4. Andere🎜🎜🎜🎜🎜Beschränken Sie das Screenshot-Feld auf das Bild: https://github.com/xyxiao001/vue-cropper/issues/429🎜 Lösung: centerBox ist auf true gesetzt und nur autoCrop=true Es wird nur wirksam, wenn 🎜🎜🎜🎜Das Projekt die Positionsinformationen und die Größe des Zuschneidefelds an den Hintergrund senden muss, damit der Hintergrund zuschneiden oder OCR durchführen kann, das zugeschnittene Bild jedoch immer, nachdem es an den Hintergrund gesendet wurde Versatz zur unteren rechten Ecke: https://github.com/xyxiao001/vue-cropper/issues/386🎜 Lösung: Beim Übergeben der Position müssen Sie position*scale verwenden.🎜🎜🎜🎜Das gibt es Bei den meisten Bildern ist das Zuschneiden kein Problem, aber bei manchen Bildern gibt es immer eine Abweichung im Bild: https://github.com/xyxiao001/vue-cropper/issues/439🎜 Lösung: Es stellt sich heraus, dass die Standardgröße des zugeschnittenen Bildes begrenzt ist , die maximale Breite und Höhe beträgt 2000 Pixel, setzen Sie diesen Wert auf 10000, Problem gelöst
Das obige ist der detaillierte Inhalt vonVerwenden Sie Vue-Cropper, um Bilder in Vue-Projekten zuzuschneiden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Netflix verwendet React als Front-End-Framework. 1) Reacts komponentiertes Entwicklungsmodell und ein starkes Ökosystem sind die Hauptgründe, warum Netflix es ausgewählt hat. 2) Durch die Komponentierung spaltet Netflix komplexe Schnittstellen in überschaubare Teile wie Videotiere, Empfehlungslisten und Benutzerkommentare auf. 3) Die virtuelle DOM- und Komponentenlebenszyklus von React optimiert die Rendering -Effizienz und die Verwaltung des Benutzerinteraktion.

Die Auswahl von Netflix in der Front-End-Technologie konzentriert sich hauptsächlich auf drei Aspekte: Leistungsoptimierung, Skalierbarkeit und Benutzererfahrung. 1. Leistungsoptimierung: Netflix wählte React als Hauptgerüst und entwickelte Tools wie SpeedCurve und Boomerang, um die Benutzererfahrung zu überwachen und zu optimieren. 2. Skalierbarkeit: Sie übernehmen eine Mikro-Front-End-Architektur, die Anwendungen in unabhängige Module aufteilt und die Entwicklungseffizienz und die Systemskalierbarkeit verbessern. 3. Benutzererfahrung: Netflix verwendet die Material-UI-Komponentenbibliothek, um die Schnittstelle kontinuierlich durch A/B-Tests und Benutzer-Feedback zu optimieren, um Konsistenz und Ästhetik sicherzustellen.

NetflixuSesacustomframeworkcalted "Gibbon" Builtonreact, NotreactorVuedirect.1) TeamExperience: Wählen Sie beobädtes Vertrauen

Netflix berücksichtigt hauptsächlich Leistung, Skalierbarkeit, Entwicklungseffizienz, Ökosystem, technische Schulden und Wartungskosten bei der Rahmenauswahl. 1. Leistung und Skalierbarkeit: Java und Springboot werden ausgewählt, um massive Daten und hohe gleichzeitige Anforderungen effizient zu verarbeiten. 2. Entwicklungseffizienz und Ökosystem: Verwenden Sie React, um die Effizienz der Front-End-Entwicklung zu verbessern und sein reiches Ökosystem zu nutzen. 3. Technische Schulden- und Wartungskosten: Wählen Sie Node.js, um Microservices zu erstellen, um Wartungskosten und technische Schulden zu senken.

Netflix verwendet React hauptsächlich als Front-End-Framework, das durch VUE für bestimmte Funktionen ergänzt wird. 1) Die Komponentierung von React und das virtuelle DOM verbessern die Leistung und Entwicklungseffizienz von Netflix -Anwendungen. 2) VUE wird in den internen Tools und kleinen Projekten von Netflix verwendet, und seine Flexibilität und Benutzerfreundlichkeit sind entscheidend.

Vue.js ist ein progressives JavaScript -Framework, das zum Erstellen komplexer Benutzeroberflächen geeignet ist. 1) Zu seinen Kernkonzepten gehören Reaktionsdaten, Komponentierungen und virtuelle DOM. 2) In praktischen Anwendungen kann es durch den Aufbau von Todo -Anwendungen und die Integration von Vuerouter demonstriert werden. 3) Beim Debuggen wird empfohlen, VODEVTOOLS und CONSOLE.LOG zu verwenden. 4) Die Leistungsoptimierung kann durch V-IF/V-Show, Listen-Rendering-Optimierung, asynchrone Belastung von Komponenten usw. erreicht werden.

Vue.js ist für kleine bis mittelgroße Projekte geeignet, während React eher für große und komplexe Anwendungen geeignet ist. 1. Vue.js 'Responsive System aktualisiert das DOM automatisch durch Abhängigkeitsverfolgung und erleichtert es, Datenänderungen zu verwalten. 2.React übernimmt einen Einweg-Datenfluss, und die Datenflüsse von der übergeordneten Komponente zur untergeordneten Komponente und liefern einen klaren Datenfluss und eine leicht zu debug-Struktur.

Vue.js eignet sich für kleine und mittelgroße Projekte und schnelle Iterationen, während React für große und komplexe Anwendungen geeignet ist. 1) Vue.js ist einfach zu bedienen und für Situationen geeignet, in denen das Team nicht ausreicht oder die Projektskala klein ist. 2) React hat ein reichhaltigeres Ökosystem und eignet sich für Projekte mit hoher Leistung und komplexen funktionalen Bedürfnissen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.