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

KINGCMS PHP 支持添加水印

1234Next >

tx1860 发表于:12-09-13 13:45 [添加收藏] 楼主 [回复] #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.尾部添加水印函数,代码见附件

点击打开链接

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



tx1860 发表于:12-09-13 13:45 沙发 [回复] #Top#
tx1860 人气:187 积分:352 金币:2671
KC元老
支持 png 和GIF 两种水印格式
ww715519816 发表于:12-09-13 20:58 板凳 [回复] #Top#
ww715519816 人气:0 积分:36 金币:40
哈哈 学习了 不错哦
dbwlw 发表于:12-09-14 17:32 4楼 [回复] #Top#
dbwlw 人气:0 积分:43 金币:20
这是真的吗,
szhualv 发表于:12-09-14 22:30 5楼 [回复] #Top#
szhualv 人气:0 积分:132 金币:20
这个真是不错。
tx1860 发表于:12-09-15 11:54 6楼 [回复] #Top#
tx1860 人气:187 积分:352 金币:2671
KC元老
= = 绝对真的
b6281564 发表于:12-09-15 23:17 7楼 [回复] #Top#
b6281564 人气:15 积分:17 金币:255
高级的方法
mycj 发表于:12-09-17 17:18 9楼 [回复] #Top#
mycj 人气:9 积分:35 金币:268
2.尾部添加水印函数,代码见附件

下载后是空的记事本呢?
tx1860 发表于:12-09-17 19:53 10楼 [回复] #Top#
tx1860 人气:187 积分:352 金币:2671
KC元老
我晕没保存就传上去了

函数这个 


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);
}
mycj 发表于:12-09-18 15:55 11楼 [回复] #Top#
mycj 人气:9 积分:35 金币:268
1.把第一步中的代码放进去后如下:
if(kc_f_put_contents($path,$img)){//写文件成功
$markImg = ROOT."images/watermark.png";
if(is_file($markImg)){//确定文件存在
setWater(ROOT.$path,$markImg,'','',9,'','img');

}
return $path;
}else{
return $imgpath;
}
……

2.在system/lib/func.php尾部添加水印函数,我是直接将代码放到?>前的

3.水印图片目录:根目录/images/watermark.png

劳驾高手帮我看看,是哪步不对么?怎么我上传的图片没有打水印呢?页面也没有报什么错

1234Next >

发表回复

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

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

Copyright © 2004-2015 Focuznet All rights reserved.

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