缩图黑边问题解决办法
						 
						
							
								
									如果设置的缩图超出部分不截取的话,缩出的图会变形。 修改下可以同比例缩小,黑边的问题也一并解决了。
  用下面的代码替换 e/class/gd.php 中的相同函数即可。 同时将 系统参数设置 -  图片设置  选项卡 中的 超出部分是否截取 设置为 否
 
 
  //原文件,新文件,宽度,高度,维持比例 function ResizeImage($big_image_name, $new_name, $max_width = 400, $max_height = 400, $resize = 1){         $returnr['file']='';         $returnr['filetype']='';     if($temp_img_type = @getimagesize($big_image_name)) {eregi('/([a-z]+)$', $temp_img_type[mime], $tpn); $img_type = $tpn[1];}     else {eregi('.([a-z]+)$', $big_image_name, $tpn); $img_type = $tpn[1];}     $all_type = array(         "jpg"   => array("create"=>"ImageCreateFromjpeg", "output"=>"imagejpeg"  , "exn"=>".jpg"),         "gif"   => array("create"=>"ImageCreateFromGIF" , "output"=>"imagegif"   , "exn"=>".gif"),         "jpeg"  => array("create"=>"ImageCreateFromjpeg", "output"=>"imagejpeg"  , "exn"=>".jpg"),         "png"   => array("create"=>"imagecreatefrompng" , "output"=>"imagepng"   , "exn"=>".png"),         "wbmp"  => array("create"=>"imagecreatefromwbmp", "output"=>"image2wbmp" , "exn"=>".wbmp")     );
      $func_create = $all_type[$img_type]['create'];     if(empty($func_create) or !function_exists($func_create))          {                 return $returnr;         }         //输出     $func_output = $all_type[$img_type]['output'];     $func_exname = $all_type[$img_type]['exn'];         if(($func_exname=='.gif'||$func_exname=='.png'||$func_exname=='.wbmp')&&!function_exists($func_output))         {                 $func_output='imagejpeg';                 $func_exname='.jpg';         }     $big_image   = $func_create($big_image_name);     $big_width   = imagesx($big_image);     $big_height  = imagesy($big_image);     if($big_width <= $max_width and $big_height <= $max_height)//如果上传图片尺寸小于缩图 返回         {                  $func_output($big_image, $new_name.$func_exname);                 $returnr['file']=$new_name.$func_exname;                 $returnr['filetype']=$func_exname;                 return $returnr;         }
      if($resize == 1) {//切图         if($big_width >= $max_width and $big_height >= $max_height)         {                         $ratiow      = $max_width  / $big_width;                         $ratioh      = $max_height / $big_height;             if($big_width > $big_height)             {             $tempx  = $max_width / $ratioh;             $tempy  = $big_height;             $srcX   = ($big_width - $tempx) / 2;             $srcY   = 0;             } else {             $tempy  = $max_height / $ratiow;             $tempx  = $big_width;             $srcY   = ($big_height - $tempy) / 2;             $srcX   = 0;             }         } else {             if($big_width > $big_height)             {             $tempx  = $max_width;             $tempy  = $big_height;             $srcX   = ($big_width - $tempx) / 2;             $srcY   = 0;             } else {             $tempy  = $max_height;             $tempx  = $big_width;             $srcY   = ($big_height - $tempy) / 2;             $srcX   = 0;             }         }                 $new_width  = ($ratiow  > 1) ? $big_width  : $max_width;                 $new_height = ($ratioh  > 1) ? $big_height : $max_height;                 if(function_exists("imagecopyresampled"))                 {                         $temp_image = imagecreatetruecolor($new_width, $new_height);                         imagecopyresampled($temp_image, $big_image, 0, 0, $srcX, $srcY, $new_width, $new_height, $tempx, $tempy);                 } else {                         $temp_image = imagecreate($new_width, $new_height);                         imagecopyresized($temp_image, $big_image, 0, 0, $srcX, $srcY, $new_width, $new_height, $tempx, $tempy);                 }                 $func_output($temp_image, $new_name.$func_exname);     }         else                 {//不切图                 $ratio1=round($big_width/$big_height,2);                 $ratio2=round($max_width/$max_height,2);                 if($ratio1>$ratio2||$ratio1==$ratio2) {                         $ratio=$max_width/$big_width;                 }                 if($ratio1<$ratio2)        {                         $ratio=$max_height/$big_height;                 }                 $temp_w=intval($big_width*$ratio);                 $temp_h=intval($big_height*$ratio);                 $temp_img=imagecreatetruecolor($temp_w,$temp_h);                 if(function_exists("imagecopyresampled")){                         $temp_img=imagecreatetruecolor($temp_w,$temp_h);                         imagecopyresampled($temp_img,$big_image,0,0,0,0,$temp_w,$temp_h,$big_width,$big_height);                 }                 else{                         $temp_image=imagecreate($temp_w, $temp_h);                         imagecopyresized($temp_img,$big_image,0,0,0,0,$temp_w,$temp_h,$big_width,$big_height);                 }                 $bg=imagecreatetruecolor($max_width,$max_height);                 $white = imagecolorallocate($bg,255,255,255);                 imagefill($bg,0,0,$white);                 if($ratio1>$ratio2){                         $x=0;             $y=($max_height-$temp_h)/2;                 }                 if($ratio1<$ratio2){             $x=($max_width-$temp_w)/2;             $y=0;         }         imagecopymerge($bg,$temp_img,$x,$y,0,0,$temp_w,$temp_h,100);         $func_output($bg, $new_name.$func_exname);         imagedestroy($bg);     }         ImageDestroy($big_image);         ImageDestroy($temp_image);         $returnr['file']=$new_name.$func_exname;         $returnr['filetype']=$func_exname;     return $returnr; }
  
  上传以下附件: [下载 *.rar](文件大小:2.89 KB,下载次数:149)
								 | 
							 
						 
						 
						
						
  帝国模板定制,功能开发等  http://ecmsjz.cn 不在线可QQ  8686588  留言,上线必回。 
					 | 
				 
			 
		 |