TP5使用加水印功能(加图片水印和文字水印)

由于项目需要图片加水印,正好使用TP5框架,下面记录一下使用方法:

1、安装扩展

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

composer require topthink/think-image

2:、使用:

 /*** 图片加水印 文字水印和图片水印  \think\Image类添加tilewater方法,平铺水印*/public function water(){$image = \think\Image::open('./addWater.png'); //要加水印的图片// 返回图片的宽度$width = $image->width();// 返回图片的高度$height = $image->height();// 返回图片的类型$type = $image->type();// 返回图片的mime类型$mime = $image->mime();// 返回图片的尺寸数组 0 图片宽度 1 图片高度$size = $image->size();$image->water('./water.png',\think\Image::WATER_NORTHWEST,50)->save('water_image.png'); //加图片水印后保存为 water_image.png$image->tilewater('./water.png',50)->save('water_image2.png'); //图片平铺水印$image = \think\Image::open('./addWater.png'); //要加水印的图片$image->text('十年磨一剑 - 为API开发设计的高性能框架','simkai.ttf',20,'#ffffff')->save('text_image.png'); //文字水印}/*** 图片加多个文字水印*/public function test(){$filename = './zhengshu.jpg';$image = \think\Image::open($filename); //要加水印的图片$image->text('仅适用于信安在线企业认证0','simkai.ttf',50,'#CCCCCC',\think\Image::WATER_SOUTHEAST,0,50)->save('./down/text_image2.png');
//        unlink($filename); //删除文件    unlink($filename); //删除文件$image = \think\Image::open('./down/text_image.png'); //要加水印的图片$image->text('仅适用于信安在线企业认证1','simkai.ttf',50,'#CCCCCC',\think\Image::WATER_SOUTHWEST,0,50)->save('./down/text_image2.png');$image->text('仅适用于信安在线企业认证2','simkai.ttf',50,'#CCCCCC',\think\Image::WATER_NORTHWEST,0,50)->save('./down/text_image2.png');$image->text('仅适用于信安在线企业认证3','simkai.ttf',50,'#CCCCCC',\think\Image::WATER_NORTHEAST,0,50)->save('./down/text_image2.png');$image->text('仅适用于信安在线企业认证4','simkai.ttf',50,'#CCCCCC',\think\Image::WATER_CENTER,0,50)->save('./down/text_image2.png');
//        $filename =  './down/text_image.png';
//        echo $filename;
//        $image->text('仅适用于信安在线企业认证5','simkai.ttf',50,'#8B7B8B',\think\Image::WATER_SOUTH,0,50)->save('./down/text_image.png');
//        $image->text('仅适用于信安在线企业认证6','simkai.ttf',50,'#8B7B8B',\think\Image::WATER_EAST,0,50)->save('./down/text_image.png');
//
//        $image->text('仅适用于信安在线企业认证7','simkai.ttf',50,'#8B7B8B',\think\Image::WATER_NORTH,0,50)->save('./down/text_image.png');
//        $image->text('仅适用于信安在线企业认证8','simkai.ttf',50,'#8B7B8B',\think\Image::WATER_WEST,0,50)->save('./down/text_image.png');}

3、添加平铺图片水印方法

在\think\Image类添加tilewater方法,平铺水印

 /*** 添加图片水印平铺** @param  string $source 水印图片路径* @param int     $alpha  透明度* @return $this*/public function tilewater($source, $alpha = 100){if (!is_file($source)) {throw new ImageException('水印图像不存在');}//获取水印图像信息$info = getimagesize($source);if (false === $info || (IMAGETYPE_GIF === $info[2] && empty($info['bits']))) {throw new ImageException('非法水印文件');}//创建水印图像资源$fun   = 'imagecreatefrom' . image_type_to_extension($info[2], false);$water = $fun($source);//设定水印图像的混色模式imagealphablending($water, true);do {//添加水印$src = imagecreatetruecolor($info[0], $info[1]);// 调整默认颜色$color = imagecolorallocate($src, 255, 255, 255);imagefill($src, 0, 0, $color);//循环平铺水印for ($x = 0; $x < $this->info['width']-10; $x) {for ($y = 0; $y < $this->info['height']-10; $y) {imagecopy($src, $this->im, 0, 0, $x, $y, $info[0], $info[1]);imagecopy($src, $water, 0, 0, 0, 0, $info[0], $info[1]);imagecopymerge($this->im, $src, $x, $y, 0, 0, $info[0], $info[1], $alpha);$y += $info[1];}$x += $info[0];}//销毁零时图片资源imagedestroy($src);} while (!empty($this->gif) && $this->gifNext());//销毁水印资源imagedestroy($water);return $this;}

4、效果:

(1)图片多个文字水印

(2)图片平铺水印

(完)

图片加多个文字水印应该有更好的方法,目前这一种太笨了。发现更好的方法后再分享。

TP5图片加水印(图片水印和文字水印)相关推荐

  1. Java,图片添加二维码和文字水印,合并为一张图

    在工作中遇到了要把两张图片合并成一张图片的情况,具体场景是用户头像➕二维码➕背景图 本着不重复造轮子的想法,搜索了hutool的utils包,还真让我找到了一个cn.hutool.core.img.I ...

  2. php 文字水印如何居中,php文字水印和php图片水印实现代码(二种加水印方法)

    $dst_path = 'dst.jpg'; $src_path = 'src.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_conten ...

  3. php pdf 文字水印图片,php如何给pdf加上文字水印和图片水印[未测试]

    php给pdf加上水印 环境 php5.5.12 fpdi-1.5.2 fpdf-1.7 原理 利用fpdi来加载已知pdf文件,用fpdf对pdf进行操作 注意事项 免费的fpdi只支持处理pdf1 ...

  4. php给图片添加水印方法汇总(包括文字水印和图片水印)

    原文地址 ``` 原文地址 1: 面向过程的编写方法 //指定图片路径 $src = '001.png'; //获取图片信息 $info = getimagesize($src); //获取图片扩展名 ...

  5. php分析图片水印,PHP开发的文字水印,缩略图,图片水印实现类与用法示例

    本文实例讲述了PHP开发的文字水印,缩略图,图片水印实现类与用法.分享给大家供大家参考,具体如下: 1.实现类ImageToTest.class.php参考代码 class ImageToTest { ...

  6. java pdf水印排布问题_java实现图片和pdf添加铺满文字水印

    依赖jar包 com.itextpdf itextpdf 5.3.2 com.itextpdf itext-asian 5.2.0 一,图片添加铺满水印 ======================= ...

  7. css关于图片加载不出来用文字显示

    当我们浏览网页的时候有时会遇到网速很低加载不出图片的情况,这时候不能影响用户体验,所以我们需要一个文字代替图片的功能 如果图片加载不出来 我们可以用文字代替 我们先拿淘宝举例: 第一种方法: 第二种方 ...

  8. css实现精灵图片加载图片失败

    失败提示: 1.控制台报错file not found. 2.资源的images文件夹下找不到加载的图片. 失败可能原因: 1.图片路径错误(最常见):层级关系一定要对. 2.css选择器编写错误(我 ...

  9. Java 生成微信扫描的二维码,跳转到指定网址,图片增加二维码及文字水印

    两种场景: 1.图片海报中加二维码 2.二维码中间加入指定图标 注意点:字体要再设置一下清晰度,要不特别模糊. graph.setRenderingHint(RenderingHints.KEY_TE ...

  10. Android水印字体,android实现文字水印效果 支持多行水印

    特点 支持多行水印,支持自定义角度,支持自定义文字大小. 原理: 使用一个TextView 占据整个页面.在TextView基础上面打水印. 用法: 具体的view在 package cn.fulus ...

最新文章

  1. python简单代码加法-Python tkinter实现简单加法计算器代码实例
  2. Linux+Apache+Postgresql+PHP安装Drupal7.15
  3. Pwntools的context设置与shellcode
  4. CSDN博客 专用备份工具
  5. c# 串口SerialPort
  6. java3d box 坐标,3d transform的坐标空间及位置
  7. 为什么人生气时说话用喊的
  8. linux进程signal,Linux 编程之【进程】signal
  9. Java技术大咖为什么都有写博客的习惯呢?
  10. 系统安全:Nessus Home版安装使用
  11. 【白皮书】2020在线教育用户增长闭环白皮书.pdf(附下载链接)
  12. 大龄开发者正在消失?NO,听听这3位50岁程序员怎么说
  13. NeHe OpenGL第三十二课:拾取游戏
  14. Linux 文件特殊权限 SUID、SGID 与 SBIT
  15. django之创建第11个项目-页面整合
  16. .NET 2.0 的压缩功能
  17. python server agent_Python实现Windows监控agent(上)
  18. SDN(软件定义网络)详解
  19. Python是个什么鬼,为什么机械设计都要用到他?
  20. 基2FFT算法matlab程序编写,基2时抽8点FFT的matlab实现流程及FFT的内部机理

热门文章

  1. 固件远程更新之STARTUPE2原语(fpga控制flash)
  2. 从西门子“数字化双胞胎”窥数字化企业全貌
  3. 安利一个我喜欢的博主(鱼皮)的项目----鱼聪明AI
  4. Ubuntu 上使用 qemu 模拟 Arm64 linux
  5. Concis组件库封装——LazyLoad懒加载
  6. 算法练习/最小公倍数_蓝桥杯历届试题 核桃的数量
  7. 最大脑洞霍金去世了!缅怀!
  8. 【Android】Android DalvikJVM
  9. 北汇信息正式成为东方中科旗下成员企业
  10. 【CSS】滚动条样式详解