快捷搜索:   nginx

Thinkphp5 上传图片打文字水印的方法

经常在开发中遇到需要给上传的图片打水印的情况,这里参考案例:

先安装扩展

使用Composer安装ThinkPHP5的图像处理类库:

composer require topthink/think-image

装完后

在控制器头部添加

use think\Image;

后端代码如下

public function upload_idcard_a(){
  $user=$this->chk_login();
  $user=Db::table('e_user')->where('uid',$user['uid'])->find();
  if($user['pass']==1){
   echo '{"status":0,"content":"已上传并审核通过无法修改"}';
  }
  $base64_string =  $_POST['base64_string'];
      $savename = uniqid().'.jpeg';//localResizeIMG压缩后的图片都是jpeg格式
      $savepath = 'idcard/'.$savename; 
      $url='/';
      $image = $this->base64_to_img( $base64_string, $savepath );
  $oss='/idcard/'.$savename;
  $image = Image::open('.'.$oss);
      $image->text('仅授权XX科技公司使用','./static/font/msyh.ttf',40,'#CCCCCC', Image::WATER_SOUTHEAST,0,40)->save('.'.$oss);
      Db::table('e_user')->where('uid="'.$user['uid'].'"')->update(['idcard_a' => $oss]);  
      if($oss){
  echo '{"status":1,"content":"上传成功","url":"'.$oss.'"}';
      }else{
          echo '{"status":0,"content":"上传失败"}';
      } 
     }



参数详解:text('要水印的文字',字体,字体大小,字体颜色,'文字要水印的位置');


部分环境可能会报Class 'think\Image' not found

可以把 ./vendor/topthink/think-image/src下的文件(包括image.php和image文件夹)
移动到 ./thinkphp/library/think 目录下,
再回到原来的程序中,就不会报错了

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论