注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

@fc_lamp

关注Web应用解决方案MySql/PHP/Python一盏名为"飞川"的灯~

 
 
 

日志

 
 

PHP 纠正(旋转)图像(片)倒置问题  

2016-01-11 15:47:33|  分类: Web技术-Php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 一 先简单说说图像(片)的旋转问题
   当你用手机以某种角度拍照时,图片也是以某种角度旋转了(用IHPONE查看图片时,IHPONE自动帮你纠正了照片,android 则不会)。图片的旋转角度信息是存放在图片的exif数据包里,参数为 Orientation。其值如下表:
旋转角度参数
1
顺时针90°6
逆时针90°8
180°3

二 PHP处理,我们需要使用exif_read_data 函数来获取图片的exif信息,然后使用imagerotate 函数来旋转图片。

三 具体实现:

/**
* 修正(旋转图像)
* @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;
}


  评论这张
 
阅读(156)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017