Heim > Artikel > Web-Frontend > Wie werden JPEG-Bilder mit EXIF-Ausrichtung auf der Clientseite korrekt angezeigt?
Dekodierung der EXIF-Ausrichtung für die JPEG-Bildkorrektur auf der Clientseite
Digitalkamerafotos verwenden häufig EXIF-Metadaten, um ihre Ausrichtung anzugeben. Allerdings ignorieren Browser diese Informationen im Allgemeinen, was zu einer falschen Bildanzeige in Webanwendungen führt. Das Problem entsteht aufgrund der zahlreichen möglichen Ausrichtungen, die ein JPEG-Bild haben kann.
Um dieses Problem zu beheben, bietet das JavaScript-Load-Image-Projekt eine Lösung zum Drehen und Spiegeln von JPEG-Bildern basierend auf ihrer EXIF-Ausrichtung. Dies gewährleistet eine genaue Anzeige und anschließende Verarbeitung von Bildern.
Funktionen
Lösung Beispiel
Um JavaScript-Load-Image in Ihre Anwendung zu integrieren, fügen Sie es einfach als Abhängigkeit ein. Die folgende Demonstration zeigt, wie Sie die Bibliothek verwenden, um ein Bild basierend auf der EXIF-Ausrichtung zu drehen und zu spiegeln:
<code class="javascript">import loadImage from 'javascript-load-image'; const imageElement = document.getElementById('my-image'); loadImage(imageElement, (image) => { // Get the EXIF orientation value const orientation = image.exif && image.exif.Orientation; // Perform rotation and mirroring transformations based on orientation if (orientation) { const width = image.naturalWidth; const height = image.naturalHeight; const canvas = document.createElement('canvas'); canvas.width = width; canvas.height = height; const context = canvas.getContext('2d'); switch (orientation) { case 1: // Normal // No transformation required break; case 2: // Mirrored horizontally context.translate(width, 0); context.scale(-1, 1); break; case 3: // Rotated 180 degrees context.translate(width, height); context.rotate(Math.PI); break; case 4: // Mirrored vertically context.translate(0, height); context.scale(1, -1); break; case 5: // Rotated 90 degrees CCW, mirrored horizontally context.translate(0, width); context.rotate(-Math.PI / 2); break; case 6: // Rotated 90 degrees CCW context.translate(height, 0); context.rotate(Math.PI / 2); break; case 7: // Rotated 90 degrees CW, mirrored horizontally context.translate(width, 0); context.rotate(Math.PI / 2); context.scale(-1, 1); break; case 8: // Rotated 90 degrees CW context.translate(height, width); context.rotate(-Math.PI / 2); break; } context.drawImage(image, 0, 0); imageElement.src = canvas.toDataURL('image/jpeg'); } });</code>
Vorteile
Durch die Verwendung von JavaScript-Load-Image, Sie können:
Das obige ist der detaillierte Inhalt vonWie werden JPEG-Bilder mit EXIF-Ausrichtung auf der Clientseite korrekt angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!