想要判断图片是否已经正确显示,需要通过exif_read_data 获得图片信息
得到的返回信息为
(此操作需要打开exif扩展)
$exif = exif_read_data( realpath(__ROOT__).$url);//获得已上传图片的基本信息
array (size=12)
'FileName' => string '575d04884b174.jpg' (length=17)
'FileDateTime' => int 1465713800
'FileSize' => int 3372313
'FileType' => int 2
'MimeType' => string 'image/jpeg' (length=10)
'SectionsFound' => string 'ANY_TAG, IFD0, EXIF' (length=19)
'COMPUTED' =>
array (size=5)
'html' => string 'width="4032" height="3024"' (length=26)
'Height' => int 3024
'Width' => int 4032
'IsColor' => int 1
'ByteOrderMotorola' => int 1
'Orientation' => int 6
'Exif_IFD_Pointer' => int 38
'ColorSpace' => int 1
'ExifImageWidth' => int 4032
'ExifImageLength' => int 3024
'FileName' 图片名称
'FileDateTime' 图片创建时间
'FileSize' 图片大小
'FileType' 文件类型
'MimeType' 图片格式
'SectionsFound'
'Orientation' 倾斜情况,
1.正常
8:竖直
6:倾斜180度
3:倒立竖直
if(!empty($exif['Orientation'])) //判断已上传图片是否存在显示状态与拍摄状态不一致
{
$source = imagecreatefromjpeg( realpath(__ROOT__).$url);//获得图片
switch($exif['Orientation']){//判断摄像状态与显示状态倾斜情况
case 8:$source = imagerotate($source,90,0);break;
case 3:$source = imagerotate($source,180,0);break;
case 6:$source = imagerotate($source,-90,0);break;
}
$url="/Upload/".$info["myfile"]["savepath"].time().rand(1,10).rand(1,10)."_other.".$info["myfile"]["ext"];
imagejpeg($source,realpath(__ROOT__).$url);//重新保存旋转过得文件
}
Imagecreatefromjpeg获得图片
Imagerotate()根据当前状态更改图片方向
Imagejpeg()重新保存图片
个人网站制作中,敬请期待http://linchuanxiao.cn