最新公告
  • 欢迎您光临329687站长资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 近期优化网站解决的的问题,帝国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(&#039;InEmpireCMSGd&#039;,TRUE);
    
    //原文件,新文件,宽度,高度,维持比例
    functionResizeImage($big_image_name,$new_name,$max_width=400,$max_height=400,$resize=1){
    $returnr[&#039;file&#039;]=&#039;&#039;;
    $returnr[&#039;filetype&#039;]=&#039;&#039;;
    if([email protected]($big_image_name)){preg_match(&#039;//([a-z]+)$/i&#039;,$temp_img_type[mime],$tpn);$img_type=$tpn[1];}
    else{preg_match(&#039;/.([a-z]+)$/i&#039;,$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][&#039;create&#039;];
    if(empty($func_create)or!function_exists($func_create))
    {
    return$returnr;
    }
    //输出
    $func_output=$all_type[$img_type][&#039;output&#039;];
    $func_exname=$all_type[$img_type][&#039;exn&#039;];
    if(($func_exname==&#039;.gif&#039;||$func_exname==&#039;.png&#039;||$func_exname==&#039;.wbmp&#039;)&&!function_exists($func_output))
    {
    $func_output=&#039;imagejpeg&#039;;
    $func_exname=&#039;.jpg&#039;;
    }
    $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[&#039;file&#039;]=$new_name.$func_exname;
    $returnr[&#039;filetype&#039;]=$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[&#039;file&#039;]=$new_name.$func_exname;
    $returnr[&#039;filetype&#039;]=$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=&#039;../&#039;;}
    elseif($editor==2){$a=&#039;../../&#039;;}
    elseif($editor==3){$a=&#039;../../../&#039;;}
    else{$a=&#039;&#039;;}
    $waterImage=$waterImage?$a.$waterImage:&#039;&#039;;
    $myfontpath=$myfontpath?$a.$myfontpath:&#039;&#039;;
    $isWaterImage=FALSE;
    $formatMsg=$fun_r[&#039;synotdotype&#039;];
    
    //读取水印文件
    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[&#039;synotdoimg&#039;];
    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[&#039;sytoosmall&#039;];
    return&#039;&#039;;
    }
    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[&#039;synotfontcolor&#039;];
    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);
    }
    ?>

    后台自动缩略图去黑边方法

    系统参数-系统参数设置-图片设置-超出部分是否截取,去掉勾选


    329站长网 » 怎么去掉帝国CMS自动缩略图出现黑边框背景

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    329687站长资源网
    一个专注于各种网站源码、程序模板、技术教程分享的站长资源下载平台
    • 5会员总数(位)
    • 2098资源总数(个)
    • 102本周发布(个)
    • 0 今日发布(个)
    • 213稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情