苹果手机上传图片之后竖图倾斜

想要判断图片是否已经正确显示,需要通过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

你可能感兴趣的:(苹果手机上传图片之后竖图倾斜)