ThinkPHP6实现上传图片带水印方法

2024-10-20   阅读:202   类型:后端   分类:TP6    标签: PHP TP6

实现步骤:上传文件成功之后,打开文件,进行水印添加,存储覆盖原有文件,实现图片加水印功能

一、安装图像处理库

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'=>'非法请求']);
    }
  }
  
}
?>
腾讯云11.11上云拼团Go,2核2G3M云服务器 28元/年

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://tpxhm.com/adetail/1129.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸一
简忆博客壁纸二
简忆博客壁纸三
简忆博客壁纸四
简忆博客壁纸五
简忆博客壁纸六
简忆博客壁纸七
简忆博客壁纸八
头像

简忆博客
勤于学习,乐于分享

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×