Récemment, lors du développement des pages du système de gestion de site Web pour l'entreprise, certains clients ont demandé que les photos téléchargées puissent ajouter automatiquement des filigranes pour empêcher d'autres de réutiliser ou de voler des images plus importantes, ce qui causerait des problèmes inutiles à l'entreprise. problèmes et pertes, et peut également empêcher les autres de porter atteinte aux images. Grâce à des recherches répétées et combinées avec layui, le téléchargement des images et l'ajout de la fonction filigrane ont été initialement réalisés. Certains codes importants sont répertoriés ici, j'espère qu'ils seront utiles à tout le monde.
Tout d'abord, la première étape consiste à installer le plug-in de traitement d'image. Pour installer ce plug-in, vous devez d'abord installer le logiciel Composer sur votre ordinateur. Le manuel d'utilisation TP5.1 fournit l'installation. étapes de Composer :
Dans Sous Linux et Mac OS
L'installation spécifique n'est pas détaillée ici. Après avoir installé le logiciel Composer, vous devez installer le plug-in d'image. Ouvrez la fenêtre d'exécution (touche système + R), entrez cmd, appuyez sur Entrée et accédez au répertoire de votre projet. . Puis exécutez :. composer require topthink/think-image
Une fois l'installation terminée, vous pouvez passer à l'étape suivante.
[HTML]
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{$site.company}会员管理系统</title> <link rel="stylesheet" href="layui/css/layui.css"> <link rel="stylesheet" href="/css/main.css"> <script type="text/javascript" src="layui/layui.js"></script> </head> <body> <div> <div> <label>照片上传</label> <div> <input type="text" name="face" id="face" placeholder="请上传照片"> </div> <div style="width: 80px!important;"> <button type="button" id="face1">上传照片</button> </div> </div> <div> <div> <div> <div> <img src="/images/thumb.png" id="face_show" width="100px"> <p id="faceText"></p> </div> </div> </div> </div> <div> <div> <input type="button" lay-submit="" lay-filter="add" value="提交"> </div> </div> </div> <script type="text/javascript"> layui.use(['form','layer','upload','element'], function(){ $ = layui.jquery; var form = layui.form ,layer = layui.layer; var upload = layui.upload; var element = layui.element; //常规使用 - 普通图片上传 var uploadInst = upload.render({ elem: '#face1' ,url: '{:url("uploadFile")}' ,before: function(obj){ //预读本地文件示例,不支持ie8 obj.preview(function(index, file, result){ $('#face_show').attr('src', result); //图片链接(base64) }); element.progress('demo', '0%'); //进度条复位 layer.msg('上传中', {icon: 16, time: 0}); } ,done: function(data){ //如果上传失败 if(data.code > 0){ layer.msg('上传成功'); document.getElementById('face').value = data.path; $('#faceText').html(''); //置空上传失败的状态 }else { layer.msg('上传失败',{icon:2}); } } ,error: function(){ //演示失败状态,并实现重传 var demoText = $('#faceText'); demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>'); demoText.find('.demo-reload').on('click', function(){ uploadInst.upload(); }); } //进度条 ,progress: function(n, index, e){ element.progress('demo', n + '%'); //可配合 layui 进度条元素使用 if(n == 100){ layer.msg('上传完毕', {icon: 1}); } } }); form.on('submit(add)', function(data){ console.log(data); //发异步,把数据提交给php $.post('{:url(\'save\')}',$('form').serialize(),function(data){ if(data.code == 1){ layer.msg(data.msg); setTimeout(function(){parent.window.location.reload();},1000); }else{ layer.alert(data.msg, {icon: 6}); } }) return false; }); }); </script> </body> </html>
public function uploadFile(){ //获取上传文件信息 $file = request()->file('file'); //以在上传目录下面生成以当前日期为子目录,存放上传文件 $path = date("Ymd"); //以当前时间和100~1000之间的随机数作为文件名称 $filename = time().rand(100,1000); //将上传的文件移动到指定目录下 $info = $file->move('uploadfile/'.$path.'/',$filename); //验证图片并移动到指定目录 if ($info){ //返回上传成功提示信息 //获取图片的名字 $imgName = $info->getFilename(); $size = $info->getInfo('size'); //获取图片的路径 $photo1 ='/uploadfile/'.$path.'/'.$info->getSaveName(); return json(['code'=>1,'path'=>$photo1]); }else{ //返回上传失败提示信息 return $file->getError(); } }
namespace app\api\classes; use think\Image; class imgWaterClass { /**图片文字水印 * object(think\Image)#47 (3) { ["im":protected] => resource(96) of type (gd) ["gif":protected] => NULL ["info":protected] => array(4) { ["width"] => int(750) ["height"] => int(450) ["type"] => string(4) "jpeg" ["mime"] => string(10) "image/jpeg" } } * */ public function imageWaterText($path,$text){ $img = ".".$path; $image = Image::open($img); $image->text($text,'./static/style/font/simsun.ttc',20,'#ffffff',9 ,"-10px")->save($img); return $img; } public function imageWaterImg($path,$logo){ $img = ".".$path; $logo = ".".$logo; $image = Image::open($img); $image->water($logo,Image::WATER_SOUTHEAST)->save($img); return $img; } }
Recommandations associées :
Les 10 derniers didacticiels vidéo thinkphpCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!