[分享]帝国6.0字段处理函数,上传图片+加水印+生成缩图
图片演示如下:
投稿页如下:
后台信息修改页:
附件管理:
上传后的原图加水印效果:
函数如下?:
//上传图片并自动生成缩图 /* 170 宽度 120 高度 no 代表删除大图保留缩图,同时下面第4个参数无效 yes 代表保留大图和小图 no 代表不加水印 yes 代表加水印 */ //user_TranImgAuto##170,120,yes,yes function user_TranImgAuto($mid,$f,$isadd,$isq,$value,$cs){ global $empire,$dbtbpre,$public_r,$emod_r,$class_r,$tranpicturetype,$musername; //$filetf=$f.'imgf';//变量名 $filetf=$f.'file';//变量名 if(!$_FILES[$filetf]['name']) { return ''; } $classid=(int)$_POST['classid'];//栏目ID $id=(int)$_POST['id'];//信息ID $filepass=(int)$_POST['filepass']; $filetype=GetFiletype($_FILES[$filetf]['name']);//文件类型 $pr=$empire->fetch1("select qaddtran,qaddtransize,qaddtranimgtype from {$dbtbpre}enewspublic limit 1"); if(!$pr['qaddtran']) { printerror("CloseQTranPic","",1);//系统关闭上传图片功能 } if(!strstr($pr['qaddtranimgtype'],"|".$filetype."|")) { printerror("NotQTranFiletype","",1);//您上传的文件扩展名有误 } if($_FILES[$filetf]['size']>$pr['qaddtransize']*1024) { printerror("TooBigQTranFile","",1);//您上传的文件大小超过系统限制 } if(!strstr($tranpicturetype,','.$filetype.',')) { printerror("NotQTranFiletype","",1);//您上传的文件扩展名有误 } $tfr=DoTranFile($_FILES[$filetf]['tmp_name'],$_FILES[$filetf]['name'],$_FILES[$filetf]['type'],$_FILES[$filetf]['size'],$classid); if($tfr['tran']) { //获取参数 $csr=explode(',',$cs); $maxwidth=$csr[0]; $maxheight=$csr[1]; $datu=$csr[2];//是否保留原图判断 $suiyi=$csr[3];//是否加水印判断 include_once(ECMS_PATH.'e/class/gd.php'); $yname=$tfr['yname'];//大图完整地址 //加水印 /* * 功能:图片加水印 (水印支持图片或文字) * 参数: * $groundImage 背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式; * $waterPos 水印位置,有10种状态,0为随机位置; * 1为顶端居左,2为顶端居中,3为顶端居右; * 4为中部居左,5为中部居中,6为中部居右; * 7为底端居左,8为底端居中,9为底端居右; * $waterImage 图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式; * $waterText 文字水印,即把文字作为为水印,支持ASCII码,不支持中文; * $textFont 文字大小,值为1、2、3、4或5,默认为5; * $textColor 文字颜色,值为十六进制颜色值,默认为#FF0000(红色); * * 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG 、PNG * $waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。 * 当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不生效。 * 加水印后的图片的文件名和 $groundImage 一样。 * $w_pct $w_quality 分别是图片质量,水印透明度 */ if($suiyi=="yes" and $datu=="yes"){ imageWaterMark($tfr[yname],9,"../sylogo.png","",5,"#FF0000","../data/mask/cour.ttf",100,100);//执行加水印 } $name=$tfr['name'];//缩图完整地址 //生成缩图 $filer=ResizeImage($yname,$name,$maxwidth,$maxheight,$public_r['spickill']); if($datu=="no"){ DelFiletext($yname);//删除大图 } if($filer['file']) { //写入数据库 $type=1; $filetime=date("Y-m-d H:i:s"); $filesize=@filesize($filer['file']); $filename=GetFilename(str_replace(ECMS_PATH,'',$filer['file'])); $adduser='[Member]'.$musername; $infoid=$isadd==1?0:$id; $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]');");//插入附件缩图 if($datu=="yes"){ $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]');");//插入附件原图 } } $value=str_replace($tfr['filename'],$filename,$tfr['url']);//返回缩图地址 //$value=$tfr['url'];//返回原图地址 } else { $value=''; } return $value; }
使用方法: 在e/class/userfun.php 文件下加入上面的函数! 在要使用的上传图片字段设置如下:
函数参数说明:
/* 170 宽度 120 高度 no 代表删除大图保留缩图,同时下面第4个参数无效 yes 代表保留大图和小图 no 代表不加水印 yes 代表加水印 */ user_TranImgAuto##170,120,yes,yes
要值得说明的是,这个是修改WC提供的上传图片并自动生成缩图。 还有最好使用在前台处理函数不要使用在后台处理函数
本文原文地址:http://www.abc3210.cn/bzzx/ecms/2009-11-13/user_TranImgAuto.html
扩展: 可以用这个思路作出批量上传图片,只要在上面加个循环就可以了 比如大家多在讨论如何是图片模型一张图片一个页面就可以用这个,大家自己试试就知道咯
帝国字段处理函数,没得说很棒!可惜细节就不敢恭维了!
|
[该贴被修改 2 次,最后修改时间 2009-11-13 15:18:10 ]
失败注定是真理 ************************** 插件问题等请不要加我Q,论坛或我网站提问! QQ:442981383 插件、风格、问题求助尽在随意 问答、小说、SWFupload、发号抽奖、采集自动审核发布
|