这些还好说,更坑的是,有时刻前端上传的图片,服务端转存后,稀里糊涂的扭转了90度,扭转了180度。关键是有的时刻这些图片在前端显现是平常的,到服务端转存后,就出题目了,前端的同砚示意不背这锅,这是你后端的题目
没办法,本身处理吧!
PHP中有处置惩罚图片扭转的拓展exif
,要处置惩罚图片扭转题目,必需装置这个拓展,exif拓展依靠php_mbstring
这个拓展,所以要装置这两个拓展。
在phpinfo中能看到这两个拓展,就OK了。
假如没有装置,就须要手动装置一下了,只说Linux上怎样装置,Windows上平常都用WAMP,WAMP能够一键装置的。
Linux引荐运用源码装置
1、起首下载拓展的源码,能够去官网下载,我用的php7.2,能够在这里下载:
链接:https://pan.baidu.com/s/1VDeJVJ5yEZZyCp8l9pNMgA
提取码:d6b4
2、编译装置
进入源码的目次
运用/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)扭转题目的细致内容,更多请关注ki4网别的相干文章!