旋转角度 | 参数 |
0° | 1 |
顺时针90° | 6 |
逆时针90° | 8 |
180° | 3 |
/**
* 修正(旋转图像)
* @param $imgPath 图像路径
* @param $degrees 旋转角度
* @internal
* @author fc_lamp
*/
function correctImageAngle($imgPath,$degrees=False)
{
$ext = '';
if($degrees===False)
{
//则直接看图像是否倒置了,
if(!function_exists('exif_read_data'))
{
//exif_read_data 能获取图像中所有exif信息
//需要 php_mbstring.dll php_exif.dll 扩展,且php_exif.dll依赖于mbstring
return False;
}
//获取exif信息中的Orientation参数
$exif = exif_read_data ($imgPath, 0, true );
if($exif===False)
{
return False;
}
$orientation=0;
foreach ( $exif as $key => $section )
{
foreach ( $section as $name => $val )
{
if($name=='MimeType')
{
$ext = explode('/',$val);
$ext = end($ext);
}
//echo "$key.$name: $val<br />\n";
if($name=='Orientation')
{
$orientation = $val;
break;
}
}
}
if($orientation==3)
{
$degrees=180;
}elseif($orientation==6)
{
$degrees = 270;
}elseif($orientation==8)
{
$degrees=90;
}else{
$degrees =0;
}
}
//旋转图像
$imgSaveFun = $imgModel = NULL;
if(empty($ext))
{
$ext = explode('.',$imgPath);
$ext = end($ext);
}
$ext = strtolower($ext);
switch ($ext)
{
case 'png':
$imgModel = imagecreatefrompng($imgPath);
$imgSaveFun = 'imagepng';
break;
case 'gif':
$imgModel = imagecreatefromgif($imgPath);
$imgSaveFun = 'imagegif';
break;
case 'wbmp':
$imgModel = imagecreatefromwbmp($imgPath);
$imgSaveFun='imagewbmp';
break;
default:
$imgModel = imagecreatefromjpeg($imgPath);
$imgSaveFun='imagejpeg';
}
$rotate = imagerotate($imgModel, $degrees, 0);
// Output
$imgSaveFun($rotate,$imgPath);
return True;
}
评论