THINKPHP3.2.3实现后台自定义图片上传配置
THINKPHP3.2.3实现后台自定义图片上传格式、大小;添加水印的条件(宽度大于多少高度大于多少才会添加水印)、水印类型(文字和图片)、水印文字的颜色和大小,水印图片上传,水印的位置以及透明度的配置 演示地址请访问http://www.gouguoyin.cn/php/32.html
THINKPHP3.2.3实现后台自定义图片上传格式、大小;添加水印的条件(宽度大于多少高度大于多少才会添加水印)、水印类型(文字和图片)、水印文字的颜色和大小,水印图片上传,水印的位置以及透明度的配置
演示地址请访问http://www.gouguoyin.cn/php/32.html
ThinkPHP
下面开始教程 一、数据库 首页要在数据库创建一个网站配置表,各个字段说明如下 CREATE TABLE IF NOT EXISTS `go_config` ( `id` int(10) NOT NULL AUTO_INCREMENT, `field` varchar(255) NOT NULL COMMENT '属性字段', `title` varchar(255) NOT NULL COMMENT '字段标题', `mark` varchar(255) NOT NULL COMMENT '备注信息,主要用于placeholder显示', `field_type` varchar(255) NOT NULL DEFAULT 'string' COMMENT '字段类型,string:字符串 longstring:长字符串 phone:手机号 email:邮箱 url:链接地址 bool:布尔 text:多行文本 editor:编辑器 pic:图片 file:文件,默认string', `config_type` varchar(255) NOT NULL DEFAULT 'site' COMMENT '配置类型', `value` varchar(255) NOT NULL COMMENT '字段值', `is_system` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否是系统字段,0:否 1:是 ,系统字段无法删除', `is_required` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否必填,1:必填 0:非必填,默认0', `sort` int(10) NOT NULL DEFAULT '1' COMMENT '排序', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态,1:正常,0:回收站,默认1', `add_time` datetime NOT NULL COMMENT '添加时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `field` (`field`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统配置表' AUTO_INCREMENT=1 ; 二、控制器 在项目的application/Admin/Controller/目录下建立ConfigController.class.php控制器,代码如下 <?php /** * alltosun.com ConfigController.class.php * ============================================================================ * 版权所有 (C) 2014-2016 GoCMS内容管理系统 * 官方网站: http://www.gouguoyin.cn * 联系方式: QQ:245629560 * ---------------------------------------------------------------------------- * 许可声明:这是一个开源程序,未经许可不得将本软件的整体或任何部分用于商业用途及再发布。 * ============================================================================ * $Author: 勾国印 (phper@gouguoyin.cn) $ * $Date: 2015-4-17 下午3:27:55 $ * $Id$ */ namespace Admin\Controller; use Think\Controller; class ConfigController extends Controller { //上传设置 public function upload() { $this->display('config_upload'); } //保存上传配置 public function upload_save() { $data = I('post.'); foreach ($data as $k => $v) { $result = M('Config')->where(array('field' => $k))->save(array('value' => $v)); } $this->success('上传设置保存成功', U('Admin/Config/upload')); } } 三、视图模板 在项目的application/Admin/View/Config目录下建立config_upload.html的模板,代码如下 {include file="Public/header" title="上传设置"/} {include file="Public/sidebar"/} <!-- 颜色选择器 --> <link rel="stylesheet" href="CSS/jquery.bigcolorpicker.css" type="text/css"> <script type="text/javascript" src="JS/jquery.bigcolorpicker.min.js"></script> <!-- 主内容 start --> <div id="content" class="span10"> <!-- 标题 start --> <div class="pageTit page-header"> <h1 id="编辑上传配置信息">编辑上传配置信息</h1> </div> <!-- 标题 end --> <!-- 内容区块 start --> <div class="formBox"> <form id="addform" action="{:U('Admin/Config/upload_save')}" method="post" enctype="multipart/form-data"> <div class="control-group"> <label>允许上传图片格式:(<font color="red">请用"|"分割格式,例如jpg|png|gif</font>)</label> <input type="text" name="upload_pic_suffix" value="{:getConfigValue('upload_pic_suffix')}" class="form-control js_site_name" placeholder="" datatype="*2-50" nullmsg="请填写允许上传图片格式" errormsg="请填写允许上传图片格式" /> <span class="Validform_checktip"></span> </div> <div class="control-group"> <label>允许上传多媒体格式:(<font color="red">请用"|"分割格式,例如swf|flv|mpg</font>)</label> <input type="text" name="upload_media_suffix" value="{:getConfigValue('upload_media_suffix')}" class="form-control js_site_name" placeholder="" datatype="*2-50" nullmsg="请填写允许上传多媒体格式" errormsg="请填写允许上传多媒体格式" /> <span class="Validform_checktip"></span> </div> <div class="control-group"> <label>允许上传文件格式:(<font color="red">请用"|"分割格式,例如zip|rar|doc|xls</font>)</label> <input type="text" name="upload_file_suffix" value="{:getConfigValue('upload_file_suffix')}" class="form-control js_site_name" placeholder="" datatype="*2-50" nullmsg="请填写允许上传文件格式" errormsg="请填写允许上传文件格式" /> <span class="Validform_checktip"></span> </div> <div class="control-group"> <label>允许上传文件大小限制:(<font color="red">单位:M</font>)</label> <input type="text" name="upload_file_size" value="{:getConfigValue('upload_file_size')}" placeholder="" datatype="n1-2" nullmsg="请填写允许上传文件大小" errormsg="允许上传文件最大不能超过100M" /> <span class="Validform_checktip"></span> </div> <div class="js_thumbBox {if condition="$upload_add_thumb eq 0"}hidden{/if}"> <div class="control-group"> <label>生成缩略图条件:(<font color="red">单位:px</font>)</label> 上传图片宽度大于:<input type="text" name="upload_thumb_pic_width" value="{:getConfigValue('upload_thumb_pic_width')}" placeholder="" datatype="n1-4" nullmsg="请填写上传图片宽度" errormsg="最大不能超过9999px" style="width:50px"/> 上传图片高度大于:<input type="text" name="upload_thumb_pic_height" value="{:getConfigValue('upload_thumb_pic_height')}" placeholder="" datatype="n1-4" nullmsg="请填写上传图片高度" errormsg="最大不能超过9999px" style="width:50px"/> <span class="Validform_checktip"></span> </div> <div class="control-group"> <label>缩略图默认大小:(<font color="red">单位:px</font>)</label> <input type="text" name="upload_thumb_width" value="{:getConfigValue('upload_thumb_width')}" placeholder="" datatype="n1-4" nullmsg="请填写缩略图默认宽度" errormsg="缩略图默认宽度最大9999px" style="width:50px"/> × <input type="text" name="upload_thumb_height" value="{:getConfigValue('upload_thumb_height')}" placeholder="" datatype="n1-4" nullmsg="请填写缩略图默认高度" errormsg="缩略图默认高度最大9999px" style="width:50px"/> <span class="Validform_checktip"></span> </div> </div> <div class="control-group"> <label>添加水印条件:(<font color="red">单位:px</font>)</label> 上传图片宽度大于:<input type="text" name="upload_watermark_pic_width" value="{:getConfigValue('upload_watermark_pic_width')}" placeholder="" datatype="n1-4" nullmsg="请填写上传图片宽度" errormsg="最大不能超过9999px" style="width:50px"/> 上传图片高度大于:<input type="text" name="upload_watermark_pic_height" value="{:getConfigValue('upload_watermark_pic_height')}" placeholder="" datatype="n1-4" nullmsg="请填写上传图片高度" errormsg="最大不能超过9999px" style="width:50px"/> <span class="Validform_checktip"></span> </div> <div class="control-group"> <label>水印类型:</label> <a class="hidden">{$upload_watermark_type = getConfigValue('upload_watermark_type')}</a> <input type="radio" name="upload_watermark_type" class="js_watermarkType" value="1" {if condition="$upload_watermark_type eq 1"}checked{/if}> 文字 <input type="radio" name="upload_watermark_type" class="js_watermarkType" value="2" {if condition="$upload_watermark_type eq 2"}checked{/if}> 图片 </div> <div class="js_textBox {if condition="$upload_watermark_type neq 1"}hidden{/if}"> <div class="control-group"> <label>水印文字:</label> <input type="text" name="upload_watermark_text" value="{:getConfigValue('upload_watermark_text')}" datatype="s1-20" nullmsg="请填写水印文字" errormsg="请输入1-20个字母或汉字" /> <span class="Validform_checktip"></span> </div> <div class="control-group"> <label>水印字体颜色:</label> <input type="text" name="upload_watermark_color" id="js_watermarkColor" value="{:getConfigValue('upload_watermark_color')}" datatype="*7-7" nullmsg="请选择水印字体颜色" errormsg="颜色格式不正确" /> <span class="Validform_checktip"></span> </div> <div class="control-group"> <label>水印字体大小:(<font color="red">单位:px</font>)</label> <input type="text" name="upload_watermark_size" value="{:getConfigValue('upload_watermark_size')}" datatype="n1-2" nullmsg="请填写水印字体大小" /> <span class="Validform_checktip"></span> </div> </div> <div class="js_picBox {if condition="$upload_watermark_type neq 2"}hidden{/if}"> <div class="control-group"> <label>上传水印图片:(<font color="red">点击图片更换水印</font>)</label> <a href="javascript:void(0);" class="js_picBtn" title="点击更换水印"><img src="/static/imghw/default1.png" data-src="{:getConfigValue('upload_watermark')}" class="lazy" id="js_logoBox"upload_watermark')}" style="max-width:90%" alt="THINKPHP3.2.3实现后台自定义图片上传配置" ></a> <input type="hidden" name="upload_watermark" id="js_upload" value="{:getConfigValue('upload_watermark')}"/> </div> <div class="control-group"> <label>水印图片默认大小:(<font color="red">单位:px</font>)</label> <input type="text" name="upload_watermark_width" value="{:getConfigValue('upload_watermark_width')}" placeholder="" datatype="n1-4" nullmsg="请填写缩略图默认宽度" errormsg="缩略图默认宽度最大9999px" style="width:50px"/> × <input type="text" name="upload_watermark_height" value="{:getConfigValue('upload_watermark_height')}" placeholder="" datatype="n1-4" nullmsg="请填写缩略图默认高度" errormsg="缩略图默认高度最大9999px" style="width:50px"/> <span class="Validform_checktip"></span> </div> </div> <div class="control-group"> <label>水印位置:</label> <a class="hidden">{$upload_watermark_position = getConfigValue('upload_watermark_position')}</a> <select class="form-control width-middle" name="upload_watermark_position"> <option value="1" {if condition="$upload_watermark_position eq 1"}selected{/if}>顶部居左</option> <option value="2" {if condition="$upload_watermark_position eq 2"}selected{/if}>顶部居中</option> <option value="3" {if condition="$upload_watermark_position eq 3"}selected{/if}>顶部居右</option> <option value="4" {if condition="$upload_watermark_position eq 4"}selected{/if}>中间居左</option> <option value="5" {if condition="$upload_watermark_position eq 5"}selected{/if}>居中</option> <option value="6" {if condition="$upload_watermark_position eq 6"}selected{/if}>中间居右</option> <option value="7" {if condition="$upload_watermark_position eq 7"}selected{/if}>底部居左</option> <option value="8" {if condition="$upload_watermark_position eq 8"}selected{/if}>底部居中</option> <option value="9" {if condition="$upload_watermark_position eq 9"}selected{/if}>底部居右</option> </select> </div> <div class="control-group"> <label>水印透明度:(<font color="red">单位:%,数值越小越透明</font>)</label> <input type="text" name="upload_watermark_opacity" value="{:getConfigValue('upload_watermark_opacity')}" datatype="n1-2" nullmsg="请填写水印透明度" errormsg="水印透明度只能在0-100之间" /> <span class="Validform_checktip"></span> </div> </div> <div class="control-group"> <img src="/static/imghw/default1.png" data-src="images/loading.gif" class="lazy" style="max-width:90%" / alt="THINKPHP3.2.3实现后台自定义图片上传配置" > <input type="submit" class="btn btn-primary Sub" value="保存" /> </div> </form> </div> <!-- 内容区块 end --> </div> <!-- 主内容 end --> <script> KindEditor.ready(function(K) { var editor = K.editor({ allowFileManager : false, uploadJson: "{:U('Admin/Upload/index')}", }); K('.js_picBtn').click(function() { editor.loadPlugin('image', function() { editor.plugin.imageDialog({ imageUrl : K('#js_logoBox').attr("src"), clickFn : function(url, title, width, height, border, align) { K('#js_logoBox').attr("src","__ROOT__"+url); K('#js_upload').val("__ROOT__"+url); editor.hideDialog(); } }); }); }); }); </script> <script> $(function(){ //颜色选择器 $("#js_watermarkColor").bigColorpicker("js_watermarkColor"); //提交表单合法性验证,这里用了volidform表单验证插件,具体用法请访问官网http://validform.rjboy.cn/ $("#addform").Validform({ tiptype:function(msg,o,cssctl){ if(!o.obj.is("form")){ var objtip=o.obj.siblings(".Validform_checktip"); cssctl(objtip,o.type); objtip.text(msg); } }, label:"label", }); $(".js_watermarkType").change(function(){ var watermarkType = $(".js_watermarkType:checked").val(); if(watermarkType == 1){ $(".js_textBox").show(); $(".js_picBox").hide(); }else{ $(".js_textBox").hide(); $(".js_picBox").show(); } }); }) </script> </div> </div> <!-- 主容器 end --> {include file="Public/footer"/} 四、使用方法 在项目的application/Common/Helper目录(没有Helper目录请自行创建)下建立Upload.class.php助手函数库,代码如下 <?php /** * alltosun.com Upload.class.php * ============================================================================ * 版权所有 (C) 2014-2016 GoCMS内容管理系统 * 官方网站: http://www.gouguoyin.cn * 联系方式: QQ:245629560 * ---------------------------------------------------------------------------- * 许可声明:这是一个开源程序,未经许可不得将本软件的整体或任何部分用于商业用途及再发布。 * ============================================================================ * $Author: 勾国印 (phper@gouguoyin.cn) $ * $Date: 2015-4-17 下午4:06:39 $ * $Id$ */ namespace Common\Helper; class Upload{ static public function index($type='image', $is_thumb=0, $is_water=0) { /* 返回标准数据 */ $return = array('error' => 0); //获取上传类型image、flash、media、file //从数据库获取上传配置信息 $max_size = getConfigValue('upload_file_size')*1024*1024; //允许上传的图片后缀 $upload_pic_suffix = getConfigValue('upload_pic_suffix'); $pic_ext_arr = explode('|', $upload_pic_suffix); //允许上传的多媒体后缀 $upload_media_suffix = getConfigValue('upload_media_suffix'); $media_ext_arr = explode('|', $upload_media_suffix); //允许上传的文件后缀 $upload_file_suffix = getConfigValue('upload_file_suffix'); $file_ext_arr = explode('|', $upload_file_suffix); //生成缩略图默认大小 $upload_thumb_width = getConfigValue('upload_thumb_width'); $upload_thumb_height = getConfigValue('upload_thumb_height'); //水印类型 $upload_watermark_type = getConfigValue('upload_watermark_type'); //文字水印文本 $upload_watermark_text = getConfigValue('upload_watermark_text'); //文字水印颜色 $upload_watermark_color = getConfigValue('upload_watermark_color'); //文字水印大小 $upload_watermark_size = getConfigValue('upload_watermark_size'); $upload_watermark_pic_width = getConfigValue('upload_watermark_pic_width'); $upload_watermark_pic_height = getConfigValue('upload_watermark_pic_height'); //图片水印路径 $upload_watermark = '.'.getConfigValue('upload_watermark'); if(!$upload_watermark){ $upload_watermark = './Public/images/water.png'; } //水印宽度 $upload_watermark_width = getConfigValue('upload_watermark_width'); //水印高度 $upload_watermark_height = getConfigValue('upload_watermark_height'); //水印位置 $upload_watermark_position = getConfigValue('upload_watermark_position'); //水印透明度 $upload_watermark_opacity = getConfigValue('upload_watermark_opacity'); //上传配置 $ext_arr = array( 'image' => $pic_ext_arr, 'media' => $media_ext_arr, 'file' => $file_ext_arr ); $upload = new \Think\Upload(); // 实例化上传类 $upload->maxSize = $max_size; // 设置附件上传大小 $upload->exts = $ext_arr[$type]; // 设置附件上传类型 $upload->savePath = './'.$type. '/'; $file_info = $upload->upload(); if ($file_info) { foreach($file_info as $info){ $file_path = './Uploads'.$info['savepath']. $info['savename']; } //引入图片处理类 $image = new \Think\Image(); $image->open($file_path); $width = $image->width(); $height = $image->height(); //生成缩略图 //$image->crop($upload_thumb_width, $upload_thumb_height, 1)->save('./crop.jpg'); //添加水印 if($is_water && $width >= $upload_watermark_pic_width && $height>= $upload_watermark_pic_height){ if($upload_watermark_type == 2){ //添加图片水印 $image->water($upload_watermark, $upload_watermark_position, $upload_watermark_opacity)->save($file_path); }else{ //添加文字水印 $image->text($upload_watermark_text, './Public/font/vista.ttf', $upload_watermark_size, $upload_watermark_color, $upload_watermark_position)->save($file_path); } } $base_url = './Uploads/'; $return['url'] = substr($base_url, 1).$info['savepath']. $info['savename']; } else { $return['error'] = 1; $return['message'] = $upload->getError(); } exit(json_encode($return)); } } 在控制器里使用方法: 引入助手函数库 use Common\Helper\Upload;调用上传函数 //$is_thumb 是否启用缩略图 ,$is_water是否启用水印 $pic_data = Upload::index($type='image', $is_thumb=0, $is_water=0); $pic_data数组里返回有上传图片的路径url,如果上传失败,则会返回错误代码和错误信息。有了上传图片的路径就可以对上传图片进行入库等操作了。 注:为方便大家使用,特将核心代码打包上传,大家请点击“下载源码”按钮下载打包文件。
源码下载地址http://www.gouguoyin.cn/php/32.html


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

隨著社群媒體的不斷發展,小紅書已經成為越來越多年輕人分享生活、發現美好事物的平台。許多用戶在發布圖片時遇到了自動儲存的問題,這讓他們感到十分困擾。那麼,如何解決這個問題呢?一、小紅書發布自動儲存圖片怎麼解決? 1.清除快取首先,我們可以嘗試清除小紅書的快取資料。步驟如下:(1)開啟小紅書,點選右下角的「我的」按鈕;(2)在個人中心頁面,找到「設定」並點選;(3)向下捲動,找到「清除快取」選項,點擊確認。清除快取後,重新進入小紅書,嘗試發布圖片看是否解決了自動儲存的問題。 2.更新小紅書版本確保你的小

隨著抖音短影片的火爆,用戶們在留言區互動變得更加豐富多彩。有些用戶希望在評論中分享圖片,以便更好地表達自己的觀點或情感。那麼,抖音評論裡怎麼發圖片呢?本文將為你詳細解答這個問題,並為你提供一些相關的技巧和注意事項。一、抖音評論裡怎麼發圖片? 1.開啟抖音:首先,你需要開啟抖音APP,並登入你的帳號。 2.找到評論區:瀏覽或發布短影片時,找到想要評論的地方,點擊「評論」按鈕。 3.輸入評論內容:在留言區輸入你的評論內容。 4.選擇傳送圖片:在輸入評論內容的介面,你會看到一個「圖片」按鈕或「+」號按鈕,點

Apple最近的iPhone可以透過清晰的細節、飽和度和亮度來捕捉回憶。但有時,您可能會遇到一些問題,這些問題可能會導致影像看起來不那麼清晰。儘管iPhone相機上的自動對焦已經取得了長足的進步,可以讓您快速拍照,但相機在某些情況下可能會錯誤地對焦錯誤的拍攝對象,從而使照片在不需要的區域更加模糊。如果iPhone上的照片看起來失焦或整體缺乏清晰度,以下貼文應該可以幫助您使它們更清晰。如何在iPhone上讓圖片更清晰[6種方法]您可以嘗試使用本機的「照片」應用程式來清理照片。如果您需要更多功能和選項

在PowerPoint中,讓圖片逐一顯示是常用的技巧,可以透過設定動畫效果來實現。本指南詳細介紹了實現此技巧的步驟,包括基本設定、圖片插入、新增動畫、調整動畫順序和時間。此外,還提供了進階設定和調整,例如使用觸發器、調整動畫速度和順序,以及預覽動畫效果。透過遵循這些步驟和技巧,使用者可以輕鬆地在PowerPoint中設定圖片逐一出現,從而提升簡報的視覺效果並吸引觀眾的注意力。

有網友發現打開瀏覽器網頁,網頁上的圖片遲遲加載不出來,是怎麼回事?檢查過網路是正常的,那是哪裡出現了問題呢?下面小編就來跟大家介紹一下網頁圖片載入不出來的六種解決方法。網頁圖片載入不出來: 1、網速問題網頁顯示不出圖片有可能是因為電腦的網路速度比較慢,電腦中開啟的軟體比較多, 而我們造訪的圖片比較大,這就可能因為載入逾時,導致圖片顯示不出來, 可以將比較佔網速的軟體將關掉,可以去任務管理器查看一下。 2、造訪人數過多 網頁顯示不出圖片還有可能是因為我們造訪的網頁,在同時段造訪的

你們是不是也在使用福昕PDF閱讀器軟體呢?那麼你們知道福昕PDF閱讀器如何將pdf文檔轉成jpg圖片嗎?下面這篇文章就為大夥帶來了福昕PDF閱讀器將pdf文檔轉成jpg圖片的方法,有興趣的夥伴們快來下文看看吧。先啟動福昕PDF閱讀器,接著在頂部工具列找到“特色功能”,然後選擇“PDF轉其他”功能。在接下來,開啟一個名為「福昕pdf線上轉換」的網頁。在頁面上方右側點選「登入」按鈕進行登錄,然後開啟「PDF轉圖片」功能。之後點擊上傳按鈕並將想要轉換成圖片的pdf檔加入進來,加入完畢後點擊「開始轉

在使用wps辦公室軟體時,我們發現不單單只用一種形式,文字裡會加入表格和圖片,表格裡也可以加入圖片等等,這些都是合併使用的,讓整個文件的內容看起來更豐富,如果需要在文件中插入兩張圖片,而且需要並排排列。我們接下來的課程就可以解決這個問題:wps文件中兩張圖片怎麼並排。 1.首先要開啟WPS軟體,找到你想要調整的圖片。左鍵點擊圖片會彈出一個選單欄,選擇「頁面佈局」。 2、在文字環繞中選擇「緊密型環繞」。 3.當需要的圖片都確認設定為「緊密型文字環繞」之後,便可以把圖片隨意拖動到合適的位置,點擊第一張圖片

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同
