这些还好说,更坑的是,有时分前端上传的图片,效劳端转存后,莫明其妙的旋转了90度,旋转了180度。要害是有的时分这些图片正在前端显示是失常的,到效劳端转存后,就出成绩了,前真个同窗示意没有背这锅,这是你后真个成绩
没方法,本人处理吧!
PHP中有解决图片旋转的拓展exif
,要解决图片旋转成绩,必需装置这个拓展,exif拓展依赖php_mbstring
这个拓展,以是要装置这两个拓展。
正在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
抱歉,评论功能暂时关闭!