帝国论坛帝国网站管理系统交流区帝国CMS使用交流[分享]帝国6.0字段处理函数,上传图片+加水印+生成缩图 【本版专题贴子】  
 1/5     1 2 3 4 5 ›› ›|
主题:[分享]帝国6.0字段处理函数,上传图片+加水印+生成缩图 [加入收藏夹]   

phome4429
用户头衔:进士

精华贴   :2
发贴数   :554
经验值   :3711
注册时间:2008-11-28
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[分享]帝国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、发号抽奖、采集自动审核发布
2009-11-13 15:05:32 已设置保密 顶部 回复 引用 报告 编辑 删除

pw8
用户头衔:探花

精华贴   :0
发贴数   :8756
经验值   :22494
注册时间:2008-10-10
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

好东西




2009-11-13 15:10:31 已设置保密 顶部 回复 引用 报告 编辑 删除

qq859856669
用户头衔:进士

精华贴   :0
发贴数   :457
经验值   :2268
注册时间:2008-06-14
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]




承接:
-----帝国建站 仿站 改站-------
-----服务器 安全设置-------
-----PHP加密 破解--------
2009-11-13 15:21:28 已设置保密 顶部 回复 引用 报告 编辑 删除

jinbat
用户头衔:进士

精华贴   :5
发贴数   :1119
经验值   :4224
注册时间:2006-01-03
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

确实很强。爱死你的头像了




2009-11-13 15:31:27 已设置保密 顶部 回复 引用 报告 编辑 删除

xdn401
用户头衔:举人

精华贴   :0
发贴数   :348
经验值   :1348
注册时间:2008-10-25
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

这强大记号。。。。。。。。



www.002pc.com41899阀门网仿各种站QQ282523118帝国CMS仿站
2009-11-13 16:53:38 已设置保密 顶部 回复 引用 报告 编辑 删除

悟空
用户头衔:探花

精华贴   :0
发贴数   :2660
经验值   :6770
注册时间:2007-11-27
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

真不错,支持楼主




2009-11-13 17:09:26 已设置保密 顶部 回复 引用 报告 编辑 删除

zangbob
用户头衔:举人

精华贴   :0
发贴数   :351
经验值   :1452
注册时间:2006-12-25
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

感谢楼主分享。。。是好东东。。




2009-11-13 17:57:40 已设置保密 顶部 回复 引用 报告 编辑 删除

fuziu
用户头衔:举人

精华贴   :0
发贴数   :619
经验值   :1687
注册时间:2007-05-31
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

好东西




2009-11-13 20:58:59 已设置保密 顶部 回复 引用 报告 编辑 删除

500919
用户头衔:探花

精华贴   :0
发贴数   :11660
经验值   :31188
注册时间:2009-03-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

力挺




2009-11-13 22:47:33 已设置保密 顶部 回复 引用 报告 编辑 删除

dirtx
用户头衔:进士

精华贴   :0
发贴数   :1023
经验值   :3239
注册时间:2007-06-17
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 10 楼]

高手




2009-11-14 00:16:10 已设置保密 顶部 回复 引用 报告 编辑 删除
 1/5     1 2 3 4 5 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1