近期优化网站处理的的问题,帝国CMS主动缩略图会呈现黑边框布景,很丑。看了GD库,发现没什么改的,网上找了下办法,完美处理了,共享下。
sys_ResizeImg函数去黑边办法
第一种办法 帝国默许:
sys_ResizeImg($r[titlepic],宽,高,0);//帝国默许的不裁剪缩放生成缩略图的办法
第二种办法 帝国默许:
sys_ResizeImg($r[titlepic],宽,高,1);//帝国默许的裁剪缩放生成缩略图的办法
第三种办法去掉裁剪不行时的黑边而且从图片缩放后中心裁剪:
sys_ResizeImg($r[titlepic],宽,高,2);//新加去黑边裁剪生成缩略图的办法
第四种办法 只固定图片的宽,高度不约束(相似不规则瀑布流的图片办法),高填写为大于0的恣意整数数字:
sys_ResizeImg($r[titlepic],宽,高,3);//新加去黑边生成相似瀑布流格局的办法
/e/class/gd.php 函数悉数代码如下:
<?php define('InEmpireCMSGd',TRUE); //原文件,新文件,宽度,高度,坚持份额 functionResizeImage($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)){preg_match('//([a-z]+)$/i',$temp_img_type[mime],$tpn);$img_type=$tpn[1];} else{preg_match('/.([a-z]+)$/i',$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_widthand$big_height<=$max_height) { $func_output($big_image,$new_name.$func_exname); $returnr['file']=$new_name.$func_exname; $returnr['filetype']=$func_exname; return$returnr; } $ratiow=$max_width/$big_width; $ratioh=$max_height/$big_height; $new_width=($ratiow>1)?$big_width:$max_width; $new_height=($ratioh>1)?$big_height:$max_height; if($resize==1){ if($big_width>=$max_widthand$big_height>=$max_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; } } }elseif($resize==2){//同份额缩放超出裁切 if($big_width>=$max_widthand$big_height>=$max_height) { if($max_width>($big_width*$ratioh)){ $tempx=$big_width; $tempy=$max_height/$ratiow; $srcX=0; $srcY=($big_height-$tempy)/2; }elseif($max_height>($big_height*$ratiow)){ $tempx=$max_width/$ratioh; $tempy=$big_height; $srcX=($big_width-$tempx)/2; $srcY=0; } }else{ if($max_height>$big_height){ $tempx=$max_width; $tempy=$big_height; $srcX=($big_width-$max_width)/2; $srcY=0; }elseif($max_width>$big_width){ $tempx=$big_width; $tempy=$max_height; $srcX=0; $srcY=($big_height-$max_height)/2; } } }elseif($resize==3){//宽度固定高度同份额恣意 $srcX=0; $srcY=0; $tempx=$big_width; $tempy=$big_height; if($big_width>=$max_width){ $new_height=$big_height*$ratiow; }else{ $new_height=$big_height; } }else{//不坚持份额 $srcX=0; $srcY=0; $tempx=$big_width; $tempy=$big_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); ImageDestroy($big_image); ImageDestroy($temp_image); $returnr['file']=$new_name.$func_exname; $returnr['filetype']=$func_exname; return$returnr; } /* *功用:图片加水印(水印支撑图片或文字) *参数: *$groundImage布景图片,即需求加水印的图片,暂只支撑GIF,JPG,PNG格局; *$waterPos水印方位,有10种状况,0为随机方位; *1为顶端居左,2为顶端居中,3为顶端居右; *4为中部居左,5为中部居中,6为中部居右; *7为底端居左,8为底端居中,9为底端居右; *$waterImage图片水印,即作为水印的图片,暂只支撑GIF,JPG,PNG格局; *$waterText文字水印,即把文字作为为水印,支撑ASCII码,不支撑中文; *$textFont文字大小,值为1、2、3、4或5,默许为5; *$textColor文字色彩,值为十六进制色彩值,默许为#FF0000(赤色); * *留意:SupportGD2.0,SupportFreeType、GIFRead、GIFCreate、JPG、PNG *$waterImage和$waterText最好不要一起运用,选其中之一即可,优先运用$waterImage。 *当$waterImage有用时,参数$waterString、$stringFont、$stringColor均不收效。 *加水印后的图片的文件名和$groundImage相同。 */ functionimageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$textFont=5,$textColor="#FF0000",$myfontpath="../data/mask/cour.ttf",$w_pct,$w_quality){ global$fun_r,$editor; if($editor==1){$a='../';} elseif($editor==2){$a='../../';} elseif($editor==3){$a='../../../';} else{$a='';} $waterImage=$waterImage?$a.$waterImage:''; $myfontpath=$myfontpath?$a.$myfontpath:''; $isWaterImage=FALSE; $formatMsg=$fun_r['synotdotype']; //读取水印文件 if(!empty($waterImage)&&file_exists($waterImage)) { $isWaterImage=TRUE; $water_info=getimagesize($waterImage); $water_w=$water_info[0];//获得水印图片的宽 $water_h=$water_info[1];//获得水印图片的高 switch($water_info[2])//获得水印图片的格局 { case1:$water_im=imagecreatefromgif($waterImage);break; case2:$water_im=imagecreatefromjpeg($waterImage);break; case3:$water_im=imagecreatefrompng($waterImage);break; default:echo$formatMsg;return""; } } //读取布景图片 if(!empty($groundImage)&&file_exists($groundImage)) { $ground_info=getimagesize($groundImage); $ground_w=$ground_info[0];//获得布景图片的宽 $ground_h=$ground_info[1];//获得布景图片的高 switch($ground_info[2])//获得布景图片的格局 { case1:$ground_im=imagecreatefromgif($groundImage);break; case2:$ground_im=imagecreatefromjpeg($groundImage);break; case3:$ground_im=imagecreatefrompng($groundImage);break; default:echo$formatMsg;return""; } } else { echo$fun_r['synotdoimg']; return""; } //水印方位 if($isWaterImage)//图片水印 { $w=$water_w; $h=$water_h; $label="图片的"; } else//文字水印 { $temp=imagettfbbox(ceil($textFont*2.5),0,$myfontpath,$waterText);//获得运用TrueType字体的文本的规模 $w=$temp[2]-$temp[6]; $h=$temp[3]-$temp[7]; unset($temp); $label="文字区域"; } if(($ground_w<$w)||($ground_h<$h)) { echo$fun_r['sytoosmall']; return''; } switch($waterPos) { case0://随机 $posX=rand(0,($ground_w-$w)); $posY=rand(0,($ground_h-$h)); break; case1://1为顶端居左 $posX=0; $posY=0; break; case2://2为顶端居中 $posX=($ground_w-$w)/2; $posY=0; break; case3://3为顶端居右 $posX=$ground_w-$w; $posY=0; break; case4://4为中部居左 $posX=0; $posY=($ground_h-$h)/2; break; case5://5为中部居中 $posX=($ground_w-$w)/2; $posY=($ground_h-$h)/2; break; case6://6为中部居右 $posX=$ground_w-$w; $posY=($ground_h-$h)/2; break; case7://7为底端居左 $posX=0; $posY=$ground_h-$h; break; case8://8为底端居中 $posX=($ground_w-$w)/2; $posY=$ground_h-$h; break; case9://9为底端居右 $posX=$ground_w-$w; $posY=$ground_h-$h; break; default://随机 $posX=rand(0,($ground_w-$w)); $posY=rand(0,($ground_h-$h)); break; } //设定图画的混色形式 imagealphablending($ground_im,true); if($isWaterImage)//图片水印 { if($water_info[2]==3) { imagecopy($ground_im,$water_im,$posX,$posY,0,0,$water_w,$water_h);//复制水印到方针文件 } else { imagecopymerge($ground_im,$water_im,$posX,$posY,0,0,$water_w,$water_h,$w_pct);//复制水印到方针文件 } } else//文字水印 { if(!empty($textColor)&&(strlen($textColor)==7)) { $R=hexdec(substr($textColor,1,2)); $G=hexdec(substr($textColor,3,2)); $B=hexdec(substr($textColor,5)); } else { echo$fun_r['synotfontcolor']; return""; } imagestring($ground_im,$textFont,$posX,$posY,$waterText,imagecolorallocate($ground_im,$R,$G,$B)); } //生成水印后的图片 @unlink($groundImage); switch($ground_info[2])//获得布景图片的格局 { case1:imagegif($ground_im,$groundImage);break; case2:imagejpeg($ground_im,$groundImage,$w_quality);break; case3:imagepng($ground_im,$groundImage);break; default:echo$formatMsg;return""; } //开释内存 if(isset($water_info))unset($water_info); if(isset($water_im))imagedestroy($water_im); unset($ground_info); imagedestroy($ground_im); } ?>
后台主动缩略图去黑边办法
体系参数-体系参数设置-图片设置-超出部分是否截取,去掉勾选
声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:123456@qq.com 我们将配合处理!
原文地址:怎么去掉帝国CMS自动缩略图出现黑边框背景发布于2022-06-27 07:43:33