Lorsque vous traitez avec des photos prises à partir de votre téléphone ou de votre appareil photo numérique, vous rencontrez souvent des problèmes avec une rotation incorrecte des photos. Pour s'assurer que les photos sont affichées correctement lors du téléchargement sur le site Web ou de l'exécution d'autres opérations, nous pouvons utiliser des extensions PHP et exif pour extraire et fixer l'angle de rotation des photos.
Avant de commencer, assurez-vous que votre serveur a installé une extension PHP EXIF. S'il n'a pas été installé, vous pouvez l'installer via la commande suivante:
<span class="fun">sudo apt-get install php-exif</span>
Une fois l'installation terminée, n'oubliez pas d'activer l'extension EXIF dans le fichier php.ini par extension non émouvante = exif .
Avec l'extension EXIF activée, nous pouvons lire les métadonnées EXIF de la photo via le code PHP, qui comprend l'angle de rotation.
Tout d'abord, utilisez la fonction exif_read_data () pour lire les données EXIF de la photo:
<span class="fun">$ exif = exif_read_data ('path / vers / photo.jpg');</span>
Une fois les données EXIF lues, nous pouvons obtenir les informations de rotation de la photo en accédant à $ exif [«orientation»] . L'angle de rotation dans EXIF est généralement représenté par des entiers, et sa signification spécifique est la suivante:
Nous pouvons calculer l'angle de rotation correct en fonction de ces valeurs:
function getPhotoRotation($exifOrientation) {
switch ($exifOrientation) {
case 3: $rotation = 180; break;
case 6: $rotation = 90; break;
case 8: $rotation = -90; break;
default: $rotation = 0;
}
return $rotation;
}
Après avoir extrait l'angle de rotation, nous pouvons utiliser la bibliothèque GD de PHP pour effectuer la rotation réelle de l'image.
Tout d'abord, utilisez la fonction ImageCreateFromJPEG () pour charger la photo:
<span class="fun">$ image = ImageCreateFromJPEG ('path / to / photo.jpg');</span>
Ensuite, utilisez la fonction Imagerotate () pour le traitement de la rotation:
<span class="fun">$ rotateDImage = imagerotate ($ image, $ rotation, 0);</span>
Enfin, utilisez ImageJPEG () pour enregistrer la photo tournée dans un fichier:
<span class="fun">ImageJPEG ($ rotateDImage, 'Path / To / Rotated-Photo.jpg');</span>
En utilisant des extensions PHP et EXIF, nous pouvons facilement extraire l'angle de rotation de la photo et effectuer un traitement de rotation de l'image à l'aide de la bibliothèque GD. Cette méthode garantit non seulement que les photos sont correctement tournées, mais évitent également efficacement le problème des erreurs d'affichage lors du téléchargement de photos.