K9 通用版 博客版 主题版 地方门户版 企业版 |   企业(ASP) 分类 使用 分享 疑问 模板 建议 帮助 错误 其他
+新建主题 [Ajax]
填写帐号密码即可完成注册
+新建话题 最新回复排序 最新主题排序 精华帖子

KINGCMS PHP 支持添加水印

1234Next >

gongniu125 发表于:12-09-18 15:57 12楼 [回复] #Top#
gongniu125 人气:0 积分:6 金币:20
很好很好
梦天 发表于:12-09-18 22:28 13楼 [回复] #Top#
梦天 人气:791 积分:3251 金币:21509
EST团队 灌水狂人
楼主的站亮出来看看啊
tx1860 发表于:12-09-19 10:13 14楼 [回复] #Top#
tx1860 人气:187 积分:352 金币:2671
KC元老

1.打开system/lib/func.php

查找

if(kc_f_put_contents($path,$img)){//写文件成功

下面添加 

$markImg = ROOT."images/watermark.png";
if(is_file($markImg)){//确定文件存在
setWater(ROOT.$path,$markImg,'','',9,'','img');

}

2.尾部添加水印函数

在 "?>"上面添加以下代码

function setWater($imgSrc,$markImg,$markText,$TextColor,$markPos,$fontType,$markType)
{


         $srcInfo = @getimagesize($imgSrc);
         $srcImg_w = $srcInfo[0];
         $srcImg_h = $srcInfo[1];
                
         switch ($srcInfo[2]) 
         { 
                case 1: 
                     $srcim =imagecreatefromgif($imgSrc); 
                     break; 
                case 2: 
                     $srcim =imagecreatefromjpeg($imgSrc); 
                     break; 
                case 3: 
                     $srcim =imagecreatefrompng($imgSrc); 
                     break; 
                default: 
                     die("不支持的图片文件类型"); 
                     exit; 
         }
                
         if(!strcmp($markType,"img"))
         {
                if(!file_exists($markImg) || empty($markImg))
                {
                     return;
                }
                     
                $markImgInfo = @getimagesize($markImg);
                $markImg_w = $markImgInfo[0];
                $markImg_h = $markImgInfo[1];
                     
                if($srcImg_w < $markImg_w || $srcImg_h < $markImg_h)
                {
                     return;
                }
                     
                switch ($markImgInfo[2]) 
                { 
                     case 1: 
                     $markim =imagecreatefromgif($markImg); 
                     break; 
                     case 2: 
                     $markim =imagecreatefromjpeg($markImg); 
                     break; 
                     case 3: 
                     $markim =imagecreatefrompng($markImg); 
                     break; 
                     default: 
                     die("不支持的水印图片文件类型"); 
                     exit; 
                }
                     
                $logow = $markImg_w;
                $logoh = $markImg_h;
         }
                
         if(!strcmp($markType,"text"))
         {
                $fontSize = 16;
                if(!empty($markText))
                {
                     if(!file_exists($fontType))
                     {
                     return;
                     }
                }
                else {
                     return;
                }
                     
                $box = @imagettfbbox($fontSize, 0, $fontType,$markText);
                $logow = max($box[2], $box[4]) - min($box[0], $box[6]);
                $logoh = max($box[1], $box[3]) - min($box[5], $box[7]);
         }
                
         if($markPos == 0)
         {
                $markPos = rand(1, 9);
         }
                
         switch($markPos)
         {
                case 1:
                     $x = +5;
                     $y = +5;
                     break;
                case 2:
                     $x = ($srcImg_w - $logow) / 2;
                     $y = +5;
                     break;
                case 3:
                     $x = $srcImg_w - $logow - 5;
                     $y = +15;
                     break;
                case 4:
                     $x = +5;
                     $y = ($srcImg_h - $logoh) / 2;
                     break;
                case 5:
                     $x = ($srcImg_w - $logow) / 2;
                     $y = ($srcImg_h - $logoh) / 2;
                     break;
                case 6:
                     $x = $srcImg_w - $logow - 5;
                     $y = ($srcImg_h - $logoh) / 2;
                     break;
                case 7:
                     $x = +5;
                     $y = $srcImg_h - $logoh - 5;
                     break;
                case 8:
                     $x = ($srcImg_w - $logow) / 2;
                     $y = $srcImg_h - $logoh - 5;
                     break;
                case 9:
                     $x = $srcImg_w - $logow - 5;
                     $y = $srcImg_h - $logoh -5;
                     break;
                default: 
                     die("此位置不支持"); 
                     exit;
         }
                
         $dst_img = @imagecreatetruecolor($srcImg_w, $srcImg_h);
                
         imagecopy ( $dst_img, $srcim, 0, 0, 0, 0, $srcImg_w, $srcImg_h);
                
         if(!strcmp($markType,"img"))
         {
                imagecopy($dst_img, $markim, $x, $y, 0, 0, $logow, $logoh);
                imagedestroy($markim);
         }
                
         if(!strcmp($markType,"text"))
         {
                $rgb = explode(',', $TextColor);
                     
                $color = imagecolorallocate($dst_img, $rgb[0], $rgb[1], $rgb[2]);
                imagettftext($dst_img, $fontSize, 0, $x, $y, $color, $fontType,$markText);
         }
                
         switch ($srcInfo[2]) 
         { 
                case 1:
                     imagegif($dst_img, $imgSrc); 
                     break; 
                case 2: 
                     imagejpeg($dst_img, $imgSrc); 
                     break; 
                case 3: 
                     imagepng($dst_img, $imgSrc); 
                     break;
                default: 
                     die("不支持的水印图片文件类型"); 
                     exit; 
         }
                
         imagedestroy($dst_img);
         imagedestroy($srcim);
}


3.上传水印到images目录,水印命名为watermark.png

flowin 发表于:12-09-19 10:31 15楼 [回复] #Top#
flowin 人气:111 积分:755 金币:4074
又一个技术帝~~!
jumpsky 发表于:12-09-19 12:46 16楼 [回复] #Top#
jumpsky 人气:30 积分:274 金币:710
非常感谢 非常感谢啊 这个很需要 
yeshili 发表于:12-09-19 15:21 17楼 [回复] #Top#
yeshili 人气:74 积分:323 金币:1398
不错哦,,学习下!
xjdata 发表于:12-09-25 16:56 18楼 [回复] #Top#
xjdata 人气:127 积分:575 金币:1732
谢谢~
taotao55 发表于:12-10-15 15:54 19楼 [回复] #Top#
taotao55 人气:0 积分:50 金币:110
这个可是方便了不少呢····
sorry 发表于:12-10-24 15:46 20楼 [回复] #Top#
sorry 人气:0 积分:0 金币:40
代码好长阿,仔细看看
qq285416397 发表于:12-10-24 21:28 21楼 [回复] #Top#
qq285416397 人气:0 积分:22 金币:190
俺学习了

1234Next >

发表回复

帐号 匿名发布 审核后可见 [加载完整在线编辑器]
内容
验证码
KingCMS 内容管理系统

关于我们 联系我们 广告报价 付款方式 站点导航

Copyright © 2004-2015 Focuznet All rights reserved.

广州唯众网络科技有限公司 粤ICP备08008106号