百度 | 神马 | 搜狗 | 技术文档 | 学习资料分享 - 记录帝国CMS及运维技术的点点滴滴
你的位置:首页 > 帝国cms技术 » 正文

帝国cms文章列表缩略图失真sys_ResizeImg()功能的解决办法

发布时间:2020-12-31

作品分类:帝国cms  缩略图  模糊  失真

帝国cms默认支持缩略图自动剪裁,它是通过函数sys_ResizeImg(),目前主流php主机环境大都支持gd库,不需要单独安装的。
但是小编购买的模板使用了缩略图自动剪裁功能,调用的是剪裁后存放在/e/data/tmp/ 路径下的tmp文件夹下。图片失真非常严重,而且自带黑边非常难看。

重新设置缩略图剪裁参数太繁琐,小编直接改为调用标题图片,岂不快哉?

如下原代码

<img src="<?=sys_ResizeImg($bqr[titlepic],375,287,1)?>" alt="<?=$bqr['title']?>"/>

直接改为:

<img src="[!--titlepic--]" alt="<?=$bqr['title']?>"/>


就搞定了!!!!!
毕竟标题图片(缩略图)已经处理过,如果将缩略图再自动压缩一遍,图片质量会大打折扣,即便按下面的方法,将质量调整为100,还是不尽如人意。
因此直接使用[!--titlepic--]调用缩略图就好了

用sys_ResizeImg()方法生成缩略图后,可以查看图片的路径,你发现图片路径并不在后台上传默认的d/file目录下,而是放在/e/data/tmp/目录中,由此可检验是否已经生效;另外方法中的第一个数字(本例中是375)表示缩略图的宽度,第2个数字(本例中是287)则是缩略图的高度,参数1则表示帝国默认的裁剪缩放生成缩略图的方式

关于sys_ResizeImg()的最后参数说明。见如下:

帝国CMS缩略图函数改进(GD库改进)
本文关键字词:缩略图,缩略图函数,帝国CMS,帝国CMS,帝国CMS缩略图去黑边框

第一种方式 帝国默认:
sys_ResizeImg($r[titlepic],宽,高,0);//帝国默认的不裁剪缩放生成缩略图的方式

第二种方式 帝国默认:
sys_ResizeImg($r[titlepic],宽,高,1);//帝国默认的裁剪缩放生成缩略图的方式

第三种方式 去掉裁剪不够时的黑边并且从图片缩放后中间裁剪:
sys_ResizeImg($r[titlepic],宽,高,2);//新加去黑边裁剪生成缩略图的方式

第四种方式 只固定图片的宽,高度不限制(类似不规则瀑布流的图片形式),高填写为大于0的任意整数数字:
sys_ResizeImg($r[titlepic],宽,高,3);//新加去黑边生成类似瀑布流格式的方式

 

关于GD库功能参数介绍:


功能:图片加水印 (水印支持图片或文字) 
 参数: 
      $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(红色); 
 
 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG 、PNG 
      $waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。 
      当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不生效。 
      加水印后的图片的文件名和 $groundImage 一样。 

但是你看到的上图示例效果是经过改进后的,而默认sys_ResizeImg()生成的缩略图则是压缩比太高,图片质量很低,看上去很模糊失真,简直可用惨不忍睹来形容。如下。

缩略图质量低

(如果一个人审美正常的话,那么上图这个美女脸上的像素点如此明显,如此糙,或许你看了不会呕吐,但相信你会把自己的眼光移到别处的。)

要修改sys_ResizeImg()生成缩略图的质量倒是很容易。只需要打开e/class/gd.php文件。找到如下这行。

$func_output($temp_image, $new_name.$func_exname,9);

e/class/gd.php文件

将最后一个数字修改为:

$func_output($temp_image, $new_name.$func_exname,85);

其中85就代表生成的缩略图压缩比,数字越高,压缩率越低,图片质量自然就越高,但要注意的是,图片质量高文件就会增大,如果图片过多、尺寸过大就会影响页面加载速度(通常),而我们使用缩略图的一个重要目的就是要减少图片尺寸以提高页面打开速度,因此这个数字华哥建议设置在65-90之间为好。

然后上传覆盖。再重新生成页面,查看是否有所变化。

讲真,这个修改方法以前华哥曾经实践过至少两次,但都没有成功。这次实践居然轻松就成功了,简直可说是如有神助!

 

不过也找不到以前失败的原因,或许是换了网站主机空间的缘故吧。可以判断的是,如果不成功看不到变化,那和这个修改方法无关,修改方法是正确的,这次得到测试和应用,没有任何变化或许要去检测主机系统或服务器的php环境配置。

Top