PHP中如何识别图片是否翻转并矫正?

已邀请:

zkbhj - 凯冰科技站长

赞同来自:

<?php
$image = imagecreatefromstring(file_get_contents($_FILES['image_upload']['tmp_name']));
$exif = exif_read_data($_FILES['image_upload']['tmp_name']);
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;
}
}

// 获取原图信息
list($owidth, $oheight, $otype) = getimagesize($_FILES['image_upload']['tmp_name']);

// 生成图片
$dest = '/tmp/ok.jpg';
switch($otype){
case 1: imagegif($source_img, $dest); break;
case 2: imagejpeg($source_img, $dest); break;
case 3: imagepng($source_img, $dest); break;
}

?>

相机给图片的exif信息加上了一个Orientation,然后图片浏览器会对这个属性做出兼容,让图片以竖图的形式显示出来。

EXIF Orientation 参数让你随便照像但都可以看到正确方向的照片而无需手动旋转,这个参数有以下几个值:

QQ截图20180911175442.jpg


QQ截图20180911175535.jpg


满眼的上下左右真是看的眼花。网上流传的还有一张图示:

424424-20160606184456590-510103777.gif


这张图里的数字 对应的就是表格里的数字。
 

要回复问题请先登录注册