源码论坛公告:本站是一个交流学习建站资源的社区论坛,旨在交流学习源码脚本等资源技术,欢迎大家投稿发言! 【点击此处将锦尚放在桌面

源码论坛,商业源码下载,尽在锦尚中国商业源码论坛

 找回密码
 会员注册

QQ登录

只需一步,快速开始

查看: 2038|回复: 0

[帝国教程] 帝国cms前台投稿标题图片字段上传图片自动加上水印的详细方法

[复制链接]

3102

主题

3503

帖子

13万

金币

超级版主

Rank: 8Rank: 8

积分
272470
发表于 2023-4-14 09:33:37 | 显示全部楼层 |阅读模式
帝国cms用户前台投稿的时候,发布上传的图片是否先给它加上水印呢?今天来讲下帝国cms前台投稿标题图片字段上传图片自动加上水印的方法!

首先在e/class/userfun.php这个自定义函数文件中添加一个函数,代码如下:
  1. function user_TranImgAuto($mid,$f,$isadd,$isq,$value,$cs){
  2.         global $empire,$dbtbpre,$public_r,$emod_r,$class_r,$tranpicturetype,$musername;
  3.         //$filetf=$f.'imgf';//变量名
  4.   $filetf=$f.'file';//变量名
  5.         if(!$_FILES[$filetf]['name'])
  6.         {
  7.                 return '';
  8.         }
  9.         $classid=(int)$_POST['classid'];//栏目ID
  10.         $id=(int)$_POST['id'];//信息ID
  11.         $filepass=(int)$_POST['filepass'];
  12.         $filetype=GetFiletype($_FILES[$filetf]['name']);//文件类型
  13.         $pr=$empire->fetch1("select qaddtran,qaddtransize,qaddtranimgtype from {$dbtbpre}enewspublic limit 1");
  14.         if(!$pr['qaddtran'])
  15.         {
  16.                 printerror("CloseQTranPic","",1);//系统关闭上传图片功能
  17.         }
  18.         if(!strstr($pr['qaddtranimgtype'],"|".$filetype."|"))
  19.         {
  20.                 printerror("NotQTranFiletype","",1);//您上传的文件扩展名有误
  21.         }
  22.         if($_FILES[$filetf]['size']>$pr['qaddtransize']*1024)
  23.         {
  24.                 printerror("TooBigQTranFile","",1);//您上传的文件大小超过系统限制
  25.         }
  26.         if(!strstr($tranpicturetype,','.$filetype.','))
  27.         {
  28.                 printerror("NotQTranFiletype","",1);//您上传的文件扩展名有误
  29.         }
  30.         $tfr=DoTranFile($_FILES[$filetf]['tmp_name'],$_FILES[$filetf]['name'],$_FILES[$filetf]['type'],$_FILES[$filetf]['size'],$classid);
  31.         if($tfr['tran'])
  32.         {
  33.                 //获取参数
  34.     $csr=explode(',',$cs);
  35.                 $maxwidth=$csr[0];
  36.                 $maxheight=$csr[1];
  37.     $datu=$csr[2];//是否保留原图判断
  38.     $suiyi=$csr[3];//是否加水印判断
  39.      include_once(ECMS_PATH.'e/class/gd.php');
  40.                 $yname=$tfr['yname'];//大图完整地址
  41.                 //加水印
  42.                 /*
  43.                 * 功能:图片加水印 (水印支持图片或文字)
  44.                 * 参数:
  45.                 *      $groundImage    背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式;
  46.                 *      $waterPos        水印位置,有10种状态,0为随机位置;
  47.                 *                        1为顶端居左,2为顶端居中,3为顶端居右;
  48.                 *                        4为中部居左,5为中部居中,6为中部居右;
  49.                 *                        7为底端居左,8为底端居中,9为底端居右;
  50.                 *      $waterImage        图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式;
  51.                 *      $waterText        文字水印,即把文字作为为水印,支持ASCII码,不支持中文;
  52.                 *      $textFont        文字大小,值为1、2、3、4或5,默认为5;
  53.                 *      $textColor        文字颜色,值为十六进制颜色值,默认为#FF0000(红色);
  54.                 *
  55.                 * 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG 、PNG
  56.                 *      $waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。
  57.                 *      当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不生效。
  58.                 *      加水印后的图片的文件名和 $groundImage 一样。
  59.                 *      $w_pct  $w_quality 分别是图片质量,水印透明度
  60.                 */            
  61.                 if($suiyi=="yes" and $datu=="yes"){
  62.          imageWaterMark($tfr[yname],5,"../data/mark/maskdef.gif","",5,"#FF0000","../data/mark/cour.ttf",100,100);//执行加水印
  63.     }
  64.                 $name=$tfr['name'];//缩图完整地址
  65.                 //生成缩图
  66.                 $filer=ResizeImage($yname,$name,$maxwidth,$maxheight,$public_r['spickill']);   
  67.                                
  68.                                  if($datu=="no"){
  69.                      DelFiletext($yname);//删除大图
  70.     }
  71.        
  72.        
  73.                 if($filer['file'])
  74.                 {
  75.                         //写入数据库
  76.                         $type=1;
  77.                         $filetime=date("Y-m-d H:i:s");
  78.                         $filesize=@filesize($filer['file']);
  79.                         $filename=GetFilename(str_replace(ECMS_PATH,'',$filer['file']));
  80.                         $adduser='[Member]'.$musername;
  81.                         $infoid=$isadd==1?0:$id;
  82.                         //$empire->query("insert into {$dbtbpre}enewsfile(filename,filesize,adduser,path,filetime,classid,no,type,id,cjid,fpath) values('$filename','$filesize','$adduser','$tfr[filepath]','$filetime','$classid','[s]".addslashes(RepPostStr($_POST[title]))."','$type','$infoid','$filepass','$public_r[fpath]');");插入附件缩图
  83.       if($datu=="yes"){
  84.       $empire->query("insert into {$dbtbpre}enewsfile(filename,filesize,adduser,path,filetime,classid,no,type,id,cjid,fpath) values('$tfr[filename]','$filesize','$adduser','$tfr[filepath]','$filetime','$classid','".addslashes(RepPostStr($_POST[title]))."','$type','$infoid','$filepass','$public_r[fpath]');");//插入附件原图
  85.       }
  86.                 }
  87.     //$value=str_replace($tfr['filename'],$filename,$tfr['url']);//返回缩图地址
  88.     $value=$tfr['url'];//返回原图地址
  89.         }
  90.         else
  91.         {
  92.                 $value='';
  93.         }
  94.         return $value;
  95. }
复制代码

在titlepic中添加处理函数,如图所示:

具体字段处理函数添加说明如下:user_TranImgAuto##160,120,yes,yes

160 宽度

120 高度

no 代表删除大图保留缩图,同时下面第4个参数无效 yes 代表保留大图和小图

no 代表不加水印 yes 代表加水印



您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

锦尚中国源码论坛

聚合标签|锦尚中国,为中国网站设计添动力 ( 鲁ICP备09033200号 ) |网站地图

GMT+8, 2024-5-28 15:14 , Processed in 0.027581 second(s), 16 queries .

带宽由 锦尚数据 提供 专业的数据中心

© 锦尚中国源码论坛 52jscn Inc. 非法入侵必将受到法律制裁 法律顾问:IT法律网 & 褚福省律师 锦尚爱心 版权申诉 版权与免责声明