Maison  >  Article  >  développement back-end  >  PHP gère le problème de rotation d'image (orientation)

PHP gère le problème de rotation d'image (orientation)

藏色散人
藏色散人avant
2019-04-24 13:23:593017parcourir

Dans le développement PHP quotidien, nous devons souvent traiter les images téléchargées depuis le front-end. Le moyen le plus simple est de les enregistrer. Parfois, nous devons effectuer certains traitements, tels que compresser des images, générer des vignettes, etc.

C'est facile à dire, mais ce qui est encore plus ennuyeux, c'est que parfois les images téléchargées par le front-end sont inexplicablement tournées de 90 degrés ou 180 degrés après avoir été transférées vers le serveur. La clé est que parfois ces images s'affichent normalement sur le front-end, mais après leur transfert sur le serveur, quelque chose ne va pas. Les étudiants du front-end ont dit qu'ils n'en prennent pas la responsabilité. C'est un problème avec votre back-end.

Vous ne pouvez rien y faire. Résolvez-le vous-même !

Il existe une extension en PHP qui gère la rotation des images exif Pour gérer le problème de rotation des images, vous devez installer cette extension. L'extension exif dépend de l'extension php_mbstring, vous devez donc les installer. deux extensions.

PHP gère le problème de rotation dimage (orientation)PHP gère le problème de rotation dimage (orientation)

Si vous pouvez voir ces deux extensions dans phpinfo, c'est OK.

S'il n'est pas installé, vous devez l'installer manuellement. Je parle uniquement de la façon de l'installer sous Linux. WAMP est généralement utilisé sous Windows, et WAMP peut être installé en un seul clic.

Linux recommande d'utiliser le code source pour l'installation

1. Téléchargez d'abord le code source de l'extension Vous pouvez le télécharger depuis le site officiel. J'utilise php7.2, qui peut être téléchargé ici. :

Lien : https://pan.baidu.com/s/1VDeJVJ5yEZZyCp8l9pNMgA

Code d'extraction : d6b4

2. Compilez et installez

Entrez le répertoire du code source

et utilisez la commande /usr/local/php/bin/phpize, générez configure (en supposant que php soit installé dans le répertoire /usr/local/php)

Utilisez ./ configure --with-php-config=/usr/local La commande /php/bin/php-config génère le Makefile

Utilisez la commande make && make install pour compiler et installer

sur modifiez le fichier php.ini (éventuellement dans le répertoire /usr/local/php/etc ou dans le répertoire /etc/php/), recherchez l'extension et placez extension=mbstring et extension=exif devant celui-ci ; ne sont pas là et ajoutez ces deux phrases, mettez extension=mbstring devant extension=exif, enregistrez et quittez

Redémarrez Apache ou nginx et vérifiez phpinfo pour voir s'il y a ces deux extensions

La préparation est OK, vous pouvez commencer à écrire du code, il suffit d'écrire un code logique simple

$str = '文件路径';
        $savePath='保存路径';
        $image = imagecreatefromstring(file_get_contents($str));
        $exif = exif_read_data($str);

        if (!empty($exif['Orientation'])) {
            switch ($exif['Orientation']) {
                case 8:
                    $image = imagerotate($image, 90, 0);
                    break;
                case 3:
                    $image = imagerotate($image, 180, 0);
                    break;
                case 6:
                    $image = imagerotate($image, -90, 0);
                    break;
            }
            imagejpeg($image, $savePath);
            imagedestroy($image);
        }

Orientation Que signifie la valeur en Je ne l'ai pas encore trouvée, je l'ajouterai quand je la trouverai. . Bienvenue à ajouter dans la zone de commentaire

Parlez-moi des pièges que vous avez rencontrés

Pour obtenir des informations sur l'image, avant php7, utilisez la fonction exif_imagetype(), et après. php7, utilisez la fonction exif_read_data()

Assurez-vous de déterminer s'il y a un champ Orientation dans le tableau pour obtenir les informations sur l'image, car de nombreuses images ne le font pas. Cet attribut, ou l'attribut est vide, doit être jugé !

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer