Home  >  Article  >  Backend Development  >  PHP handles image (orientation) rotation problem

PHP handles image (orientation) rotation problem

藏色散人
藏色散人forward
2019-04-24 13:23:593017browse

In daily PHP development, we often need to process images uploaded from the front end. The simplest way is to save them. Sometimes we need to perform some processing, such as compressing images, generating thumbnails, etc.

These are easy to say, but what is even more annoying is that sometimes the pictures uploaded by the front end are inexplicably rotated 90 degrees or 180 degrees after being transferred to the server. The key is that sometimes these pictures are displayed normally on the front end, but after they are transferred to the server, problems arise. The students on the front end said that they do not take the blame. This is a problem with your back end.

There is nothing you can do about it. Solve it yourself!

There is an extension to handle image rotation in PHPexif. To deal with the problem of image rotation, this extension must be installed. The exif extension depends on the php_mbstring extension, so you need to install it. Two extensions.

PHP handles image (orientation) rotation problemPHP handles image (orientation) rotation problem

If you can see these two extensions in phpinfo, it’s OK.

If it is not installed, you need to install it manually. I only talk about how to install it on Linux. WAMP is generally used on Windows, and WAMP can be installed with one click.

Linux recommends using source code for installation

1. First download the source code of the extension. You can download it from the official website. I use php7.2, which can be downloaded here:

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

Extraction code: d6b4

2. Compile and install

Enter the source code directory

Use /usr/local/php/bin/phpize command, generate configure (assuming php is installed in the /usr/local/php directory)

Use ./configure --with-php-config=/usr/local The /php/bin/php-config command generates a Makefile

Use the make && make install command to compile and install

To modify the php.ini file (possibly in the /usr/local/php/etc directory Or in the /etc/php/ directory), find extension, remove the ones in front of extension=mbstring and extension=exif; remove the missing ones and add these two sentences, put extension=mbstring in front of extension=exif, save and exit

Restart Apache or nginx, check phpinfo to see if there are these two extensions

The preparation is OK, you can start writing code, just write a simple logic code

$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 What does the value mean? I haven't found it yet. I will add it when I find it. Welcome to add in the comment area

Talk about the pitfalls you encountered

Get the picture Information, before php7, use the exif_imagetype() function, and after php7, use the exif_read_data() function

Be sure to determine whether there is an Orientation field in the array to obtain the image information, because many images do not have this attribute , or the attribute is empty, you must judge!

The above is the detailed content of PHP handles image (orientation) rotation problem. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:aliyun.com. If there is any infringement, please contact admin@php.cn delete