技术相关 · 2014年7月19日

php等比缩放图片并计算其margin

php等比缩放图片并计算其margin,适用于处理宽高比例不一致但要求显示一致的图片场合。


/*
 * 等比缩放图片并计算其margin
 * @param $picpath 图片路径
 * @param $pwidth  要显示的宽度
 * @param $pheight  要显示的高度
 * @return array 宽高,margin的top和left(bottom=top,right=left)
 */ 
function resizeImageWHM($picpath,$pwidth,$pheight){
 $imginfo=getimagesize($picpath);
 $owidth=$imginfo[0];
 $oheight=$imginfo[1];

 $ra=number_format(($owidth/$pwidth),3);//宽比
 $ra2=number_format(($oheight/$pheight),3);//高比
 if($owidth>$pwidth && $oheight>$pheight){
 if($ra>=$ra2){
	     $width=round($owidth/$ra);;
		 $height=round($oheight/$ra);
	  }else{
	     $width=round($owidth/$ra2);
		 $height=round($oheight/$ra2);
	  }	  
	
      
 }else{
    $width=$owidth;
	$height=$oheight;
 }
 
 $margin_top=0;
 if($height<$pheight){
    $margin_top=round(($pheight-$height)/2);
 }
 
 $margin_left=0;
 if($width<$pwidth){
    $margin_left=round(($pwidth-$width)/2);
 }
 
 $newsize['width']=$width;
 $newsize['height']=$height;
 $newsize['margin_top']=$margin_top;
 $newsize['margin_left']=$margin_left;

 return $newsize;
}