最近项目中发现一件很有意思的现象,H5上传图片,接口上传服务器保存,前端展示此图片正常,后台展示逆时针90°,后来知道了exif,通过exif信息查看器可以看到这张图片的方向。
简单介绍一下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图片旋转的问题,欢迎大家多多指教!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。