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
Spezifische Methode: 1. Öffnen Sie die Eingabeauf...
Inhaltsverzeichnis 1. Warum Slots verwenden? 1.1 ...
Kommen wir ohne weitere Umschweife direkt zum Cod...
Lösung Funktion mergeImgs(Liste) { const imgDom =...
Vorwort Da die wichtigste Datenstruktur im MySQL-...
1. Stellen Sie zunächst einige häufig verwendete ...
Inhaltsverzeichnis 1. Bild oben 2. Benutzer exist...
Beim Herunterfahren des MySQL-Servers können, abh...
Ich bin ein SQL-Anfänger und dachte, die Installa...
Vorwort Bei der Entwicklung statischer Seiten, wi...
Beim Starten von MongoDB lautet die Eingabeauffor...
Nginx kann nicht nur Versionsinformationen verber...
Inhaltsverzeichnis TypeScript-Umgebungskonstrukti...
Inhaltsverzeichnis Prototyp-Kettendiagramm Grundl...
In diesem Artikelbeispiel wird der spezifische Co...