6kbbs V8.0 官方论坛  - 手机版
论坛|登录|注册
论坛 > 插件下载
发帖 | 1927点击, 20回复.
分享一个6kbbs上传图片自动添加水印增强补丁
1楼, liujam, 回复
发表于 2011-05-06 17:04
使用6kbbs一段时间了,感觉非常好,很利于二次开发,刚刚添加了上传自动水印的功能,因为仅单个文件改动,大家容易替换,所以分享一下,效果如下:替换文件下载:使用方法:
1、解压upload.rar,上传至论坛目录:\inc\attachment\upload.php 进行替换。
2、制作一张名为mark.png的png图片做为水印图片,上传至论坛目录:\images\mark.png 注意只支持png格式的水印图片。

over~~~
该帖子于 2011-05-06 17:08 编辑过
2楼, dos_cc, 回复
发表于 2011-05-06 22:31
嗯!谢谢楼主分享咯!
继续加油啊!
3楼, lwlliang, 回复
发表于 2011-05-07 00:08
赞一个,加油!
4楼, 征程, 回复
发表于 2011-05-11 09:07
下载后的提示为该文件已经被破坏了!
5楼, liujam, 回复
发表于 2011-05-12 16:35
刚试过,是正常的喔,清空浏览器缓存后,再下载,或者在链接上点击右键,另存为
6楼, 老木, 回复
发表于 2011-05-12 20:25
下载后的提示为该文件已经被破坏了!
7楼, 老木, 回复
发表于 2011-05-12 20:28
8楼, liujam, 回复
发表于 2011-05-13 13:12
重新上传了一次,ZIP格式。

我直接说一下修改方法好了,记得要用DW编辑,记事本编辑UTF-8格式的保存会出问题。

1、打开\inc\attachment\upload.php文件,切换至第121行:

在以下代码

  $upuser['todayuploaded']="todayuploaded+1";
  $upuser['NOQUOTE_todayuploaded']=true;
  $db->row_update("users", $upuser, "id={$lg['userid']}");

下方,增加一行:

  ImgMark("/images/mark.png","/uploadfile/attachment/".$attach['filepath']);

2、切换至文件末行,在“?>”之前插入如下代码:

//图片增加水印
function ImgMark($logo,$filepath)
{  
    $logo=$_SERVER['DOCUMENT_ROOT'].str_replace('/','\\',$logo);
    $filepath=$_SERVER['DOCUMENT_ROOT'].str_replace('/','\\',$filepath);
    $uptypes=array('jpg','gif');//上传图片文件类型列
    if(in_array(substr($filepath,-3), $uptypes))
   {//检查文件类型,若上传的文件为jpg或gif图片则加水印

        if(strstr($filepath,"jpg"))
          { //若上传图片类型为jpg,则用imagecreatefromjpeg读取目标文件
            $im = imageCreatefromjpeg($filepath);
            $wfilew=imagesx($im);//取得图片的宽
            $wfileh=imagesy($im);//取得图片的高
          }else{
            //否则若上传图片类型为gif,则用imagecreatefromgif读取目标文件
            $im = imageCreatefromgif($filepath);
            $wfilew=imagesx($im);//取得图片的宽
            $wfileh=imagesy($im);//取得图片的高
          }
   //设定混合模式
   imagealphablending($im, true);
   //读取水印文件
   $im2 = imagecreatefrompng($logo);//若水印图片为jpg,则此去可改为$im2 = imagecreatefromjpeg($waterimg)
   $waterw=imagesx($im2);//取得水印图片的宽
   $waterh=imagesy($im2);//取得水印图片的高
   //放水印到图片中
   $wimgx=$wfilew-8-$waterw;$wimgy=$wfileh-8-$waterh;//放右下角
   //拷贝水印到目标文件
   imagecopy($im, $im2, $wimgx, $wimgy, 0, 0, $waterw, $waterh);
   //输出图片
        if(strstr($filepath,"jpg")){
     imagejpeg($im,$filepath);
        }else{
           imagegif($im,$filepath);
        }
      imagedestroy($im);//释放内存
      imagedestroy($im2);
   }   
}
TOP
论坛 > 插件下载