PHP处理图片(orientation)旋转问题-php教程

资源魔 28 0
正在PHP一样平常开发中,常常需求解决前端上传来的图片,最简略的就是保留一下,有时分需求进行一些解决,比方紧缩图片,天生缩略图等等。

这些还好说,更坑的是,有时分前端上传的图片,效劳端转存后,莫明其妙的旋转了90度,旋转了180度。要害是有的时分这些图片正在前端显示是失常的,到效劳端转存后,就出成绩了,前真个同窗示意没有背这锅,这是你后真个成绩

没方法,本人处理吧!

PHP中有解决图片旋转的拓展exif,要解决图片旋转成绩,必需装置这个拓展,exif拓展依赖php_mbstring这个拓展,以是要装置这两个拓展。

8311a34eec50c0fafce77eb6fb3d8b4.png63df98fbee098a92353d68b0c2520fd.png

正在phpinfo中能看到这两个拓展,就OK了。

假如不装置,就需求手动装置一下了,只说Linux上怎样装置,Windows上普通都用WAMP,WAMP能够一键装置的。

Linux保举应用源码装置

一、起首下载拓展的源码,能够辞官网下载,我用的php7.2,能够正在这里下载:

链接:https://pan.百度.com/s/1VDeJVJ5yEZZyCp8l9pNMgA

提取码:d6b4

二、编译装置

进入源码的目次

应用/usr/local/php/bin/phpize饬令,天生configure(假定php装置正在/usr/local/php目次下)

应用./configure --with-php-config=/usr/local/php/bin/php-config饬令天生 Makefile文件

应用make && make install饬令编译装置

去修正php.ini文件(可能正在/usr/local/php/etc目次或许/etc/php/目次下),找到 extension 把 extension=mbstring以及 extension=exif后面的;去掉不的加之这两句,把extension=mbstring放正在extension=exif后面,保留加入

重启Apache或许nginx,查看phpinfo,有无这两个拓展

预备工作OK了,能够开端写代码了,只写一下简略的逻辑代码吧

$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中的值代表甚么含意,我还没查到,等查到再增补吧,欢送年夜佬评论区增补

说一下遇到的坑

猎取图片信息,正在php7以前,用exif_imagetype()函数,正在php7当前用exif_read_data()函数

肯定要判别是猎取到图片信息的数组中否存正在Orientation字段,由于不少图片中不不这个属性,或许属性为空,肯定要判别!

以上就是PHP解决图片(orientation)旋转成绩的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学 orientation

抱歉,评论功能暂时关闭!