Maison > développement back-end > tutoriel php > Pourquoi les orientations des images iPhone et Android ne sont-elles pas corrigées à l'aide de la fonction `exif_read_data` de PHP ?

Pourquoi les orientations des images iPhone et Android ne sont-elles pas corrigées à l'aide de la fonction `exif_read_data` de PHP ?

Barbara Streisand
Libérer: 2024-10-28 06:57:02
original
473 Les gens l'ont consulté

Why are iPhone and Android image orientations not being corrected using PHP's `exif_read_data` function?

PHP read_exif_data et ajuster l'orientation

Le code fourni tente d'ajuster l'orientation des images JPEG téléchargées en fonction des données EXIF. Cependant, les utilisateurs ont signalé des problèmes avec les images des iPhones et des appareils Android.

Analyse du code

Les données EXIF ​​sont extraites à l'aide de la fonction exif_read_data. L'instruction switch vérifie des orientations spécifiques et tente de faire pivoter l'image en conséquence. Cependant, il semble que les données EXIF ​​​​fournies ne contiennent pas de valeur d'orientation valide.

Code mis à jour

Pour résoudre ce problème, nous pouvons utiliser une méthode plus robuste pour extraire les données d'orientation. Voici une version mise à jour du code :

<code class="php">$exif = exif_read_data($upload_path . $newfilename, 'ANY_TAG');
$ort = $exif['IFD0']['Orientation'] ?? 1;</code>
Copier après la connexion

Valeurs d'orientation EXIF

La valeur d'orientation peut varier de 1 à 8, avec différentes valeurs indiquant différentes rotations ou retournements. .

  • 1 : Horizontal (normal)
  • 3 : 180° rotation CW
  • 6 : 90° rotation CW
  • 8 : 90° Rotation CCW
  • 2 : Retournement horizontal
  • 4 : Retournement vertical
  • 5 : Retournement horizontal et rotation CW de 90°
  • 7 : Retournement vertical et 90° Rotation CW

Ajustement de l'orientation de l'image

Avec la valeur d'orientation correcte, nous pouvons ensuite ajuster l'image selon nos besoins :

<code class="php">switch ($ort)
{
    case 3: // 180 rotate left
        $image->imagerotate(-180, -1);
        break;

    case 6: // 90 rotate right
        $image->imagerotate(-90, -1);
        break;

    case 8:    // 90 rotate left
        $image->imagerotate(90, -1);
        break;
}</code>
Copier après la connexion

Considérations supplémentaires

Si les données EXIF ​​ne contiennent toujours pas la valeur d'orientation ou si l'ajustement ne semble pas fonctionner, vous devrez peut-être consulter la documentation spécifique de votre bibliothèque d'images ou envisager d'utiliser méthodes alternatives pour déterminer l'orientation correcte.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal