Décodage de l'orientation EXIF pour la correction d'image JPEG côté client
Les photos d'appareils photo numériques utilisent souvent des métadonnées EXIF pour spécifier leur orientation. Cependant, les navigateurs ignorent généralement ces informations, ce qui entraîne un affichage incorrect des images sur les applications Web. Le problème se pose en raison des nombreuses orientations possibles qu'une image JPEG peut avoir.
Pour résoudre ce problème, le projet JavaScript-Load-Image propose une solution pour faire pivoter et mettre en miroir les images JPEG en fonction de leur orientation EXIF. Cela garantit un affichage précis et un traitement ultérieur des images.
Caractéristiques
Solution Exemple
Pour incorporer JavaScript-Load-Image dans votre application, incluez-le simplement en tant que dépendance. La démonstration suivante illustre comment utiliser la bibliothèque pour faire pivoter et refléter une image en fonction de l'orientation EXIF :
<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>
Avantages
En utilisant JavaScript-Load-Image, vous pouvez :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!