Ich habe kürzlich an einem Projekt zur Gesichtserfassung gearbeitet und als ich das Frontend-Modul schrieb, stieß ich auf ein Problem. Wenn Kunden Fotos hochladen oder Fotos aufnehmen und diese direkt hochladen, werden einige Bilder möglicherweise um 90 Grad gedreht. Daher müssen wir den Kunden eine Schaltfläche geben, damit sie die Bilder selbst drehen können. Der Effekt ist ungefähr wie folgt Abbildung 1. Normaler Bild-Upload Abbildung 2. Das Bild ist nach links gedreht Abbildung 3. Bild nach rechts gedreht Das Obige ist eine Bildrotationsfunktion Beginnen wir nun mit dem Codeteil. Hier habe ich eine Methode übernommen und mein aktuelles Bildformat ist base64. Es spielt keine Rolle, ob Sie auf andere Formate stoßen, da unser endgültiger Effekt noch in ein Bildobjekt konvertiert werden muss, um ihn zu erreichen. /** * Bildrotation* @param direction Die Rotationsrichtung*/ drehen (Richtung) { const img = neues Bild() // Die Idee besteht darin, das Bild auf ein Zeichenbrett abzubilden und das Bild dann neu zu zeichnen. Daher müssen wir ein Canvas-Objekt erstellen, das als Zeichenbrett fungiert. const canvas = document.createElement('canvas') // Base64-Konvertierung des Bildobjekts img.src = this.uploadImage // Denken Sie daran, base64 in ein Bildobjekt zu konvertieren, bevor Sie andere Vorgänge ausführen. Dem Autor ist hier ein Fehler unterlaufen. Die Onload-Methode lädt das Bild, bevor andere Vorgänge ausgeführt werden. Wenn das Bild ein Dateipfad ist, ist der domänenübergreifende Aufrufeffekt offensichtlicher.img.onload = () => { // Die Höhe und Breite von img können nicht abgerufen werden, nachdem das img-Element ausgeblendet wurde, andernfalls tritt ein Fehler auf const height = img.height const width = img.width // Der Drehwinkel ist in Radiant als Parameter angegeben const ctx = canvas.getContext('2d') wenn (Richtung === 'rechts') { canvas.width = Höhe canvas.height = Breite ctx.rotate(90 * Math.PI / 180) ctx.drawImage(Bild, 0, 0, Breite, -Höhe) } anders { canvas.width = Höhe canvas.height = Breite ctx.rotate(-90 * Math.PI / 180) ctx.drawImage(Bild, 0, 0, -Breite, Höhe) } // Konvertiere das gedrehte Bild zurück in Base64 dies.uploadImage = dies.getBase64Image(img, canvas) } }, /** * Konvertieren Sie die Bilddatei in Base64 */ getBase64Image (Bild, Leinwand) { const ctx = canvas.getContext('2d') ctx.drawImage(Bild, 0, 0, Bildbreite, Bildhöhe) const ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase() returniere canvas.toDataURL('image/' + ext) } Hinweis: Wenn das Bild von einer Cross-Domain bezogen wird, kann es bei der Konvertierung von Canvas zurück in Base64 zu Problemen kommen. In diesem Fall müssen Sie möglicherweise einen Proxy aktivieren, um das Bild abzurufen. 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:
|
>>: Starten Sie die auf Docker basierende nginxssl-Konfiguration
Als technischer Neuling zeichne ich den Vorgang d...
MySQL-Versionen werden in Enterprise Edition und ...
Routenplanung vue-router4 behält den Großteil der...
MySQL-Abfrage mit mehreren Bedingungen Umgebung: ...
1. MHA Durch die Überwachung des Masterknotens ka...
Inhaltsverzeichnis Vorwort 1. Was ist Phantomlese...
Verstehen Sie zunächst die Funktion updatexml() U...
Was sind Slots? Wir wissen, dass in Vue nichts in...
<br />Vorwort: Bevor Sie dieses Tutorial les...
beschreiben: fuser kann anzeigen, welches Program...
Inhaltsverzeichnis $.ajax von jQuery Der Beginn d...
Inhaltsverzeichnis Warum GZIP-Komprimierung verwe...
Vorwort: Während des Betriebs und der Wartung der...
【Vorwort】 Die SMS-Funktion unseres Projekts beste...
Inhaltsverzeichnis 1. Testumgebung 1.1 CentOS 7 i...