JavaScript zum Erzielen eines Klickbild-Flip-Effekts

JavaScript zum Erzielen eines Klickbild-Flip-Effekts

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:
  • JS implementiert die Methode, der Maus zu folgen, um das Bild in drei Dimensionen zu spiegeln
  • So implementieren Sie einfaches Bildumdrehen mit JavaScript
  • js-Methode zum Erzielen eines 360-Grad-Flip-Effekts des Bildes mithilfe der Tastensteuerung
  • Beispielcode für die JS-Bildumkehrsteuerung (kompatibel mit Firefox, also Chrome)

<<:  MySQL-Beispiel für die Abfrage aller untergeordneten mehrstufigen Unterabteilungen basierend auf einer bestimmten Abteilungs-ID

>>:  Starten Sie die auf Docker basierende nginxssl-Konfiguration

Artikel empfehlen

Grafisches Tutorial zur Installation von Linux CentOS6.9 unter VMware

Als technischer Neuling zeichne ich den Vorgang d...

Detailliertes Tutorial zum Herunterladen von MySQL unter Windows 10

MySQL-Versionen werden in Enterprise Edition und ...

Ein einfaches Beispiel für die Verwendung von Vue3-Routing VueRouter4

Routenplanung vue-router4 behält den Großteil der...

MySQL-Abfragemethode mit mehreren Bedingungen

MySQL-Abfrage mit mehreren Bedingungen Umgebung: ...

MySQL Serie 14 MySQL Hochverfügbarkeitsimplementierung

1. MHA Durch die Überwachung des Masterknotens ka...

So lösen Sie das Phantomleseproblem in MySQL

Inhaltsverzeichnis Vorwort 1. Was ist Phantomlese...

Fehlereinfügungsanalyse der Funktion „updatexml()“ von MySQL

Verstehen Sie zunächst die Funktion updatexml() U...

Detaillierte Analyse der Verwendungs- und Anwendungsszenarien von Slots in Vue

Was sind Slots? Wir wissen, dass in Vue nichts in...

Zusammenfassung zur Anwendung dekorativer Elemente im Webdesign

<br />Vorwort: Bevor Sie dieses Tutorial les...

Detaillierte Erklärung der Verwendung des Fuser-Befehls in Linux

beschreiben: fuser kann anzeigen, welches Program...

So verwenden Sie async await elegant in JS

Inhaltsverzeichnis $.ajax von jQuery Der Beginn d...

So zeigen Sie MySQL-Links an und löschen abnormale Links

Vorwort: Während des Betriebs und der Wartung der...