我们有时需要对推片打上水印,防止别人盗用,thinkphp 自己的水印功能只能选择位置添加水印,但是有时候图片某些位置比较干净(空白部分),很容易处理掉,这样就无法起到防止盗用图片的效果。

这篇教程分享一下使用 ThinkPHP5 实现图片水印平铺的效果。

关键代码操作

1、打开第三方类库文件:vendor\topthink\think-image\src\Image.php

2、把下面代码复制到上方地址的图片处理类库中(即增加一个图片处理方法)/**

* 添加图片水印平铺

*

* @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 info['width']-10; $x) {

for ($y = 0; $y 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;

}

使用方法:

注意:仅供参考,你可以改造到你的项目的上传图片部分!use think\Image;

class ....

public function test(){

$image = Image::open('bg.jpg');

// 给原图设置水印图片(colleced.png)并保存 water_image.png(可以带路径)

$image->tilewater('colleced.png',100)->save('water_image.png');

echo "";

}

效果如下:

php图片平铺,ThinkPHP5实现图片水印平铺效果相关推荐

  1. 在线图片水印平铺工具

    在线图片水印平铺工具 在线图片水印平铺工具 本工具可以为图片添加自定义的平铺文本水印,可以用于给证件添加水印,隐私图片添加水印等,方便快捷,工具仅支持较新的浏览器版本. 工具为纯客户端处理,数据将不会 ...

  2. php 图片水印平铺,EmpireCMS 水印平铺

    这篇文章主要介绍了关于EmpireCMS 水印平铺,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 修改 /e/class/gd.php下的imageWaterMark方法 如下if($ ...

  3. php如何平铺背景图片,css如何让背景图片平铺?css背景图片平铺四种方式介绍

    在网页设计的过程中,有时候可能会要求背景图片平铺,因为这样会让整个网页看起来比较好看,图片平铺可以不用具体设置body宽度和高度大小,就可以直接将图片平铺整个页面,那么,如何让背景图片平铺呢?接下来本 ...

  4. Css的背景(背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定)

    通过css背景属性,可以给页面元素添加背景样式. 背景属性可以设置背景颜色.背景图片.背景平铺.背景图片位置.背景图像固定等. 背景颜色: Background-color:#******: < ...

  5. 黑马程序员前端-CSS背景:颜色、图片、平铺、背景图片位置、背景图像

    前端学习笔记教程不定期更新中,传送门: 前端HTML第一天:什么是网页?什么是HTML?网页怎么形成? 黑马程序员前端-CSS入门总结 黑马程序员前端-CSS之emmet语法 黑马程序员前端-CSS的 ...

  6. java怎么让图片铺满_Java实现水印铺满图片

    public class ImageMarkUtil { /** 水印透明度 */ private static float alpha = 0.5f; /** 水印图片旋转角度 */ private ...

  7. HTML让背景图片铺满整个图片

    有时候我们加入背景图片时,会由于图片的大小不一致,导致图片进行平铺,以下代码可以解决这个问题 <style> body {background:url("./images/bac ...

  8. CSS的背景(背景颜色,背景图片,背景平铺,背景图片位置,背景图片固定(图片附着),背景复合写法)

    CSS的背景 通过 CSS 背景属性,可以给页面元素添加背景样式. 背景属性可以设置背景颜色.背景图片.背景平铺.背景图片位置.背景图像固定等. 背景颜色 background-color 定义元素的 ...

  9. C#图片处理示例(裁剪,缩放,清晰度,水印)

    前言 需求源自项目中的一些应用,比如相册功能,通常用户上传相片后我们都会针对该相片再生成一张缩略图,用于其它页面上的列表显示.随便看一下,大部分网站基本都是将原图等比缩放来生成缩略图.但完美主义者会发 ...

最新文章

  1. 远程连接docker中的mysql容器_docker构建mysql容器及Navicat 远程连接
  2. Oracle分页查询2
  3. lua math.random()
  4. 数论 —— 佩尔方程与连分数
  5. 遥感影像处理有高招,“专治”各类花式并发的述求!
  6. mysql capi函数详解_技术分享|MySQLCAPI参数MYSQL_OPT_READ_TIMEOUT的一些行为分析
  7. linux信任主机建立不了,openssh主机间信任关系建立
  8. linux交叉编译jpeg,libjpeg的交叉编译以及jpeg图片的缩放(缩略图)
  9. matlab2c使用c++实现matlab函数系列教程-find函数
  10. Java基础梳理(一)
  11. python实现猴子排序(Monkey_sort)闲聊睡眠排序
  12. AOP 实现请求参数打印
  13. Android模拟器读取GPS串口模拟器GPS数据
  14. SQL server 2008 R2 使用教程
  15. 均值滤波器、中值滤波器、滤波器的常见应用。
  16. P1322 logo语言
  17. Word中插入目录时未找到目录项
  18. 计算机wordif函数,wordif函数怎么用
  19. 中台详解(上)-什么是中台
  20. Python数据分析_美国犯罪数据_US_Crime_Rates EDA.csv

热门文章

  1. 最经典的常用拍照姿势大全,顶级POSE
  2. USACO Mooo Moo
  3. Flink + 强化学习搭建实时推荐系统
  4. python的基本原理_python基础1(理论基础)
  5. java mysql方言_支持的数据库方言 · drinkjava2/jDialects Wiki · GitHub
  6. linux ps与top 命令下wa,hi,si,st等及 VSZ,RSS,VIRT,RES,等关键字含义详解!
  7. python进阶学习--PyCharm使用
  8. 怎么用蓝光u宝装linux系统,蓝光U宝U盘启动盘制作工具V3.3(完整版)使用教程
  9. CTFshow web3 菜鸡刷题记录
  10. unity3d 禁用脚本