Discuz X2.5 缩略图没有水印解决办法

升级2.5之后一直没注意,水印竟然只有原图才会有,而缩略图是没有水印的,就是说得点击图片才能看到水印,瞎搞。。之前用X2的时候貌似是正常的,但是之前的一些版本都存在这个问题,不得不说康盛新创太扯淡了。。只能自己解决了

首先尝试后台更改设置看看能不能解决:

步骤:后台–全局–上传设置–论坛附件–论坛附件缩略图设置, 选择不启用, “直接缩放原图”选择“是”,设置原图缩放大小,建议根据论坛的宽度设置,(窄版可设置为750*1024,)。

设置完后上传图片测试,会发现有水印了,但是点开图片会发现并没有大图,就是说图片已经被裁减为750*1024了(不是固定比例,根据最长边裁减),解决办法是原图缩放大小那里留空,就不会裁减,但是水印会非常小。因为论坛需要展示大图,这种情况不合适了,只能再尝试其他方法。

根据网上搜到的老版本的修改代码的方案,修改移植后代码如下(需要改两处):

打开source/function/function_post.php文件, 查找如下代码:

$image->Watermark($_G['setting']
['attachdir'].'/forum/'.$newattachfile[$aid], '', 'forum');

在其上面插入一行代码:

if(file_exists($_G['setting']['attachdir'].'/forum/'.$newattachfile[$aid].'.thumb.jpg')){
      $image->Watermark($_G['setting']['attachdir'].'/forum/'.$newattachfile[$aid].'.thumb.jpg','','forum');
   }

203至209行(注意: 这里的行数是在原版的基础上, 安装插件等可能会导致不在此行)变为:

if($_G['setting']['watermarkstatus'] && empty($_G['forum']['disablewatermark'])) {
   if(file_exists($_G['setting']['attachdir'].'/forum/'.$newattachfile[$aid].'.thumb.jpg')){
      $image->Watermark($_G['setting']['attachdir'].'/forum/'.$newattachfile[$aid].'.thumb.jpg','','forum');
   }
      $image->Watermark($_G['setting']['attachdir'].'/forum/'.$newattachfile[$aid], '', 'forum');
      $update['filesize'] = $image->imginfo['size'];
}

然后查找

C::t('forum_attachment_unused')->delete($aid);

在其下面插入如下代码:

if(file_exists($_G['setting']['attachdir'].'/forum/'.$attach['attachment'].'.thumb.jpg')){
   $image->Watermark($_G['setting']['attachdir'].'/forum/'.$attach['attachment'].'.thumb.jpg','','forum');
 }

修改后覆盖源文件即可,注意覆盖前先备份. 

两种方式都可以达到目的,一般论坛选择第一种即可,有特殊需求的可修改代码(风险自担= =、),以上代码在IE,FireFox下测试正常,Chrome下上传图片的那个按钮点了没反应,道行太浅,求高手赐教(刚刚发现貌似是浏览器出问题了=,= 求测试)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注