最近项目中发现一件颇有意思的现象,H5上传图片,接口上传服务器保存,前端展现此图片正常,后台展现逆时针90°,后来知道了exif,经过exif信息查看器能够看到这张图片的方向。php
简单介绍一下exif,一种图像文件格式,数据存储与JPEG格式是彻底相同的,实际上Exif格式就是在JPEG格式头部插入了数码照片的信息。前端
php处理图片的exif,首先要在php.ini中开启mbstrig和exif模块服务器
$imgInfo = getimagesize($upload_file['filename']); //获取图像大小及相关信息,2是图像的类型,2 = JPG if($imgInfo[2] == 2) { $img2 = imagecreatefromjpeg($upload_file["filename"]); $exif = exif_read_data($upload_file["filename"]); //exif_read_data函数能够用来读取图片的exif信息 if(!empty($exif['Orientation'])) { switch($exif['Orientation']) { case 8: $img2 = imagerotate($img2,90,0); imagejpeg($img2, $new_img); break; case 3: $img2 = imagerotate($img2,180,0); imagejpeg($img2, $new_img); break; case 6: $img2 = imagerotate($img2,-90,0); imagejpeg($img2, $new_img); break; } } imagedestroy($img2); // unlink($upload_file['filename']); }
这样就行了,能够解决exif图片旋转的问题,欢迎你们多多指教!函数