实现步骤:上传文件成功之后,打开文件,进行水印添加,存储覆盖原有文件,实现图片加水印功能
一、安装图像处理库
composer require topthink/think-image
二、使用方法
<?php /** *公共文件上传 * User: Hm * Date: 2020/9/16 * Email: <2938039696@qq.com> **/ declare (strict_types = 1); namespace app\admin\controller; use think\exception\ValidateException; class Upload extends Base { /* * 单文件上传+水印 * */ public function uploadImgWater(){ //判断是否是POST请求,如果是处理上传逻辑 if (request()->isPost()){ //接收文件上传类型 $namePath = request()->param('type'); //获取表单上传文件 $file = request()->file('file'); $upload_dir = '/'.$namePath; //组装文件保存目录 $suffix='jpg,jpeg,png,gif'; //文件格式 $size='3'; //文件大小 try { //验证器验证上传的文件 validate(['file'=>[ //限制文件大小 'fileSize' => $size * 1024 * 1024, //限制文件后缀 'fileExt' => 'jpg,jpeg,png,gif' ]],[ 'file.fileSize' => '上传的文件大小不能超过'.$size.'M', 'file.fileExt' => '请上传后缀为:'.$suffix.'的文件' ])->check(['file'=>$file]); //上传文件到本地服务器 $filename = \think\facade\Filesystem::disk('public')->putFile($upload_dir, $file); if ($filename){ $src = '/uploads/'.str_replace('\\', '/', $filename); // 水印图片路径 $waterpath = public_path('uploads/').str_replace('\\', '/', $filename); $image = \think\Image::open($waterpath); // 给原图左上角添加水印并保存water_image.png $image->water('./static/index/case/water.png',\think\Image::WATER_NORTHWEST,50)->save(public_path('uploads/').str_replace('\\', '/', $filename)); return json(['code'=>1,'msg'=>'上传成功','data'=>['src'=>$src]]); }else{ return json(['code'=>0,'msg'=>'上传失败']); } }catch (ValidateException $e){ return json(['code'=>0,'msg'=>$e->getMessage()]); } }else{ return json(['code'=>0,'msg'=>'非法请求']); } } } ?>
文章评论(0)