请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Discuz! X 最新研发动态 通过这个窗口,关注跟踪我们的研发进展 Discuz! 开发技术文库 - 给官方提建议

Discuz! X2 正式版下载 帮助网站实现一站式服务  商业支持服务咨询 下载 - 安装 - 常见问题 - 转换 - 讨论 - 购买

2012站长年会开启报名 限量船票免费发放 Discuz!十大荣誉用户评选 - Discuz!NT3.6发布 漫游引入QQ空间游戏 -一骑新区横扫三国-5d6d免费论坛

查看: 64507|回复: 119

discuz5.0水印(logo + 文字(英文/汉字任意选择)+发布者名字+时间 [复制链接]

Rank: 7Rank: 7Rank: 7

UID
472704
积分
536
帖子
127
威望
37
在线时间
0 小时
注册时间
2006-10-27
发表于 2006-12-14 10:46:14 |显示全部楼层
我说的是ttf字体,好多人都问坐标怎么确定,那么我告诉大家,$text_x,$text_y所表示的坐标定义了第一个字符的基本点,大概是字符的左下角坐标。(其中$text_y 坐标,它设定了字体基线的位置,不是字符的最底端。)


看到好多人都需要一些特别的水印,就做了这个特别为5.0做的水印.

修改文件bbs/admin/setting中的
  1. showsetting('settings_watermarkstatus', '', '', '<table cellspacing="'.INNERBORDERWIDTH.'" cellpadding="'.TABLESPACE.'" class="tableborder" style="margin-bottom: 3px; margin-top:3px;"><tr><td colspan="3"><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="0" '.$checkwm[0].'>'.$lang['settings_watermarkstatus_none'].'</td></tr><tr align="center" class="altbg2"><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="1" '.$checkwm[1].'> #1</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="2" '.$checkwm[2].'> #2</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="3" '.$checkwm[3].'> #3</td></tr><tr align="center" class="altbg2"><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="4" '.$checkwm[4].'> #4</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="5" '.$checkwm[5].'> #5</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="6" '.$checkwm[6].'> #6</td></tr><tr align="center" class="altbg2"><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="7" '.$checkwm[7].'> #7</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="8" '.$checkwm[8].'> #8</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="9" '.$checkwm[9].'> #9</td></tr></table>');
复制代码

修改成:
  1. showsetting('settings_watermarkstatus', '', '', '<table cellspacing="'.INNERBORDERWIDTH.'" cellpadding="'.TABLESPACE.'" class="tableborder" style="margin-bottom: 3px; margin-top:3px;"><tr><td colspan="3"><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="0" '.$checkwm[0].'>'.$lang['settings_watermarkstatus_none'].'</td></tr><tr align="center" class="altbg2"><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="1" '.$checkwm[1].'> #1</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="2" '.$checkwm[2].'> #2</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="3" '.$checkwm[3].'> #3</td></tr><tr align="center" class="altbg2"><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="4" '.$checkwm[4].'> #4</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="5" '.$checkwm[5].'> #5</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="6" '.$checkwm[6].'> #6</td></tr><tr align="center" class="altbg2"><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="7" '.$checkwm[7].'> #7</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="8" '.$checkwm[8].'> #8</td><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="9" '.$checkwm[9].'> #9</td></tr><tr><td><input class="radio" type="radio" name="settingsnew[watermarkstatus]" value="10" '.$checkwm[10].'> #10</td></tr></table>');
复制代码


寻找bbs/include/post.func.php中
  1. imageAlphaBlending($watermark_logo, true);
  2. imageCopyMerge($dst_photo, $watermark_logo, $x, $y, 0, 0, $logo_w, $logo_h, $watermarktrans);
复制代码

修改成
  1. imageAlphaBlending($watermark_logo, true);
  2.                                                
  3.                                                 if($watermarkstatus == 10) {
  4.                                                        
  5.                                                         //计算黑色的方框的参数
  6.                                                         $bg_x1 = 0;
  7.                                                         $bg_y1 = $img_h - $logo_h - 10;
  8.                                                         $bg_x2 = $img_w;
  9.                                                         $bg_y2 = $img_h;
  10.                                                         $bg_color = imagecolorallocate($dst_photo, 0, 0, 0); //这里参数0-255,对应颜色R/G/B
  11.                                                        
  12.                                                         //在底部画黑色方框
  13.                                                         imagefilledrectangle($dst_photo, $bg_x1, $bg_y1, $bg_x2, $bg_y2, $bg_color);
  14.                                                        
  15.                                                         //logo位置
  16.                                                         imageCopyMerge($dst_photo, $watermark_logo, $bg_x1 + 10,        $bg_y1 + 5, 0, 0, $logo_w, $logo_h, $watermarktrans);
  17.                                                        
  18.                                                         //文字内容,暂时支持英文,可以把独自流浪内容改了
  19.                                                         $text = "(C) 2001-2006, duziliulang Inc.";
  20.                                                         $font = 4;        //字体1-5
  21.                                                         $text_x = round(($img_w - ($logo_w + 20 )) / 2) + ($logo_w + 20) - round((@imagefontwidth($font) * strlen($text)) / 2);
  22.                                                         $text_y = round(($bg_y2 - $bg_y1 - (@imagefontheight($font))) / 2) + $bg_y1;       
  23.                                                         $text_color = imagecolorallocate($dst_photo, 0xff, 0xff, 0xff);                //0xff是255的十六进制,你也可以直接用255,这里参数0-255,对应颜色R/G/B               
  24.                                                         imagestring($dst_photo, $font, $text_x, $text_y, $text, $text_color);                                                       
  25.                                                        
  26.                                                 } else {                                               
  27.                                                         imageCopyMerge($dst_photo, $watermark_logo, $x,        $y, 0, 0, $logo_w, $logo_h, $watermarktrans);
  28.                                                 }
复制代码



看到好多人都要汉字支持,所以添加了汉字支持,注意:以下修改只供discuz论坛的爱好者测试和研究,因为以下修改而出现的其他问题,本作者不负任何责任,因为牵涉到GBK汉字转utf编码,我测试没有出现问题,不保证不会出现其他问题,作者注!!
汉字支持修改以下(第一步修改文件bbs/admin/setting和上面的一样)主要是修改post.func.php文件:
首先添加附件到include目录下,所用到的'simsun.ttc'为宋体字体,请到c:\windows\fonts下面找到宋体,复制到include即可,太大了没有办法上传!


在post.func.php文件找到下面

  1. if(!defined('IN_DISCUZ')) {
  2.         exit('Access Denied');
  3. }
复制代码


下面添加函数
  1. //该函数是从网上找到,归原作者所有,我只是修改适合这里使用--独自流浪
  2. function GBKToUnicode(&$String)
  3.         {
  4.           $UnicodeData=file(DISCUZ_ROOT."./include/gbkunicode.data");
  5.                 $ReturnString="";
  6.                 $StringLength=strlen($String);
  7.                 $p="";
  8.                 $q="";
  9.                 for($i=0;$i<$StringLength;$i++){
  10.                         if(($p=ord(substr($String,$i,1)))>128){
  11.                                 $q=ord(substr($String,++$i,1));
  12.                                 if ($p>254) {
  13.                                     $ReturnString.='&#'.hexdec('003f').';';
  14.                                 }
  15.                                 elseif ($q<64||$q>254) {
  16.                                     $ReturnString.='&#'.hexdec('003f').';';
  17.                                 }
  18.                                 else {
  19.                                         $q=($q-64)*4;
  20.                                         $ReturnString.='&#'.hexdec(substr($UnicodeData[$p-128],$q,4)).';';
  21.                                 }
  22.                         }
  23.                         else {
  24.                                 if ($p==128) {
  25.                                     $ReturnString.='&#'.hexdec('20ac').';';
  26.                                 }
  27.                                 else {
  28.                                         $ReturnString.='&#'.$p.';';
  29.                                 }
  30.                         }
  31.                 }
  32.                 return $ReturnString;
  33. }
复制代码


寻找bbs/include/post.func.php中
  1. imageAlphaBlending($watermark_logo, true);
  2. imageCopyMerge($dst_photo, $watermark_logo, $x, $y, 0, 0, $logo_w, $logo_h, $watermarktrans);
复制代码

修改成
  1. imageAlphaBlending($watermark_logo, true);
  2.                                                
  3.                                                 if($watermarkstatus == 10) {
  4.                                                        
  5.                                                         //计算黑色的方框的参数
  6.                                                         $bg_x1 = 0;
  7.                                                         $bg_y1 = $img_h - $logo_h - 10;
  8.                                                         $bg_x2 = $img_w;
  9.                                                         $bg_y2 = $img_h;
  10.                                                         $bg_color = imagecolorallocate($dst_photo, 0, 0, 0); //这里参数0-255,对应颜色R/G/B
  11.                                                        
  12.                                                         //在底部画黑色方框
  13.                                                         imagefilledrectangle($dst_photo, $bg_x1, $bg_y1, $bg_x2, $bg_y2, $bg_color);
  14.                                                        
  15.                                                         //logo位置
  16.                                                         imageCopyMerge($dst_photo, $watermark_logo, $bg_x1 + 10,        $bg_y1 + 5, 0, 0, $logo_w, $logo_h, $watermarktrans);
  17.                                                        
  18.                                                         global $discuz_user;
  19.                                                        
  20.                                                         //文字内容,暂时支持英文,可以把独自流浪内容改了                                                                                       
  21.                                                         $text = "(C) 2001-2006, 独自流浪 Inc. 版权归 $discuz_user 所有 ".date('y年n月j日-H点m分', time());                                                       
  22.                                                         $font = 'simsun.ttc';        //字体参数
  23.                                                         $text_h = 11;         //文字高度
  24.                                                         $text_x = round(($img_w - ($logo_w + 20 )) / 2) + ($logo_w + 20) - round(($text_h * strlen($text)) / 2);
  25.                                                         $text_y = round(($bg_y2 - $bg_y1 - $text_h) / 2) + $bg_y1;       
  26.                                                         $text_color = imagecolorallocate($dst_photo, 0xff, 0xff, 0xff);                //0xff是255的十六进制,你也可以直接用255,这里参数0-255,对应颜色R/G/B               
  27.                                                         //imagestring($dst_photo, $font, $text_x, $text_y, $text, $text_color);       
  28.                                                         $text = GBKToUnicode($text);                                               
  29.                                                         imagettftext($dst_photo, $text_h, 0, $text_x, $text_y, $text_color, $font, $text);

  30.                                                        
  31.                                                 } else {                                               
  32.                                                         imageCopyMerge($dst_photo, $watermark_logo, $x,        $y, 0, 0, $logo_w, $logo_h, $watermarktrans);
  33.                                                 }
复制代码


所用到的'simsun.ttc'为宋体字体,请到c:\windows\fonts下面找到宋体,复制到include即可,太大了没有办法上传!

效果如下:

[ 本帖最后由 hnxxwyq 于 2006-12-17 13:42 编辑 ]

后台新加的#10

后台新加的#10

discuz默认的水印

discuz默认的水印

用一个小的logo代替

用一个小的logo代替

汉字效果

汉字效果

gbkunicode.rar

40.68 KB, 下载次数: 1277

Rank: 6Rank: 6

UID
466582
积分
1638
帖子
1670
威望
21
在线时间
5 小时
注册时间
2006-10-19
发表于 2006-12-14 10:47:21 |显示全部楼层
沙发。。

使用道具 举报

Rank: 1

UID
448858
积分
46
帖子
56
威望
0
在线时间
0 小时
注册时间
2006-9-25
发表于 2006-12-14 10:49:39 |显示全部楼层
板凳。。。。。终于=到了

使用道具 举报

Rank: 7Rank: 7Rank: 7

UID
267144
积分
2016
帖子
1392
威望
65
在线时间
179 小时
注册时间
2005-10-30
发表于 2006-12-14 10:52:22 |显示全部楼层
什么东东.先顶后看

使用道具 举报

Forum Legend

EverYOne Is Good!

Rank: 8Rank: 8

UID
378007
积分
5700
帖子
3563
威望
235
在线时间
9 小时
注册时间
2006-6-2
发表于 2006-12-14 10:54:34 |显示全部楼层
这个不错昂.   
 

使用道具 举报

Genius

I will find PLMM

Rank: 12Rank: 12Rank: 12

UID
175797
积分
49875
帖子
53401
威望
526
在线时间
163 小时
注册时间
2005-3-3
发表于 2006-12-14 11:27:36 |显示全部楼层



看上去挺8错的

使用道具 举报

Rank: 3Rank: 3

UID
291527
积分
333
帖子
254
威望
10
在线时间
0 小时
注册时间
2005-12-18
发表于 2006-12-14 11:29:08 |显示全部楼层
我喜欢呵呵,不错的东西
中国理财部:www.licaibu.com
笑嘻嘻娱乐http://www.xoxixi.com
河南影视 http://www.hntv5.com

使用道具 举报

Rank: 2

UID
290245
积分
98
帖子
83
威望
0
在线时间
0 小时
注册时间
2005-12-17
发表于 2006-12-14 11:35:23 |显示全部楼层
楼主就是 NB
very much的

但是还是和V6dp.com的有点区别
http://www.discuz.net/thread-405049-1-1.html

[ 本帖最后由 六月人 于 2006-12-14 11:41 编辑 ]

使用道具 举报

King

喜欢狐狸精

Rank: 6Rank: 6

UID
482069
积分
1381
帖子
1658
威望
2
在线时间
0 小时
注册时间
2006-11-6
发表于 2006-12-14 11:58:12 |显示全部楼层

使用道具 举报

Forum Legend

随风而来-飘飘而去

Rank: 8Rank: 8

UID
268889
积分
8826
帖子
2114
威望
506
在线时间
0 小时
注册时间
2005-11-3
发表于 2006-12-14 14:40:53 |显示全部楼层
不错的东西...

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

fastpost

手机版|Archiver|北京康盛新创科技有限责任公司 ( 京ICP证110024号|京网文[2011]0019-007号 )  

GMT+8, 2012-2-13 08:18 , Processed in 0.146674 second(s), 16 queries , Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部