• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > ThinkPHP5实现图片水印平铺效果

ThinkPHP5实现图片水印平铺效果

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了ThinkPHP5,图片水印,水印平铺效果等相关知识,希望对您有所帮助

我们有时需要对推片打上水印,防止别人盗用,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 < $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;}

使用方法:

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

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 "<img src='/water_image.png'/>";}

效果如下:

5f6c62e7a9412.jpg

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ThinkPhp5.1制作微信支付以及支付后的几种状态说明
  • 你知道Thinkphp5.1让验证码在Electron-vue中怎么用?
  • ThinkPHP5通过ajax插入图片并实时显示(完整代码)
  • 分析 thinkphp5 显示render不兼容问题
  • ThinkPHP5访问怎么去除/public/index.php
  • Thinkphp5.1详细讲解中间件的用法
  • ThinkPHP5分页paginate代码实例解析
  • 关于thinkphp5中分页paginate()之后的数据中添加键值
  • Thinkphp5+Redis实现商品秒杀代码实例讲解
  • 如何使用thinkphp5.1的数组查询对象

相关文章

  • 2022-04-29聊聊Bootstrap5中的断点与容器
  • 2022-04-29怎么利用配置文件来管理多个 Node.js 进程
  • 2022-04-29javascript如何删除数组里的某个元素
  • 2022-04-29Illustrator使用混合和透明度制作发光按钮
  • 2022-04-29微信小程序自定义菜单导航实现楼梯效果
  • 2022-04-29手动触发 Lazyload 显示懒加载的图片
  • 2022-04-29Phpcms V9内容编辑器支持JavaScript的设置方法
  • 2022-04-29Thinkphp6如何利用ZipArchive打包下载文件
  • 2022-04-29corelDRAW 9 打造水晶表情
  • 2022-04-29发外链的pr比较高的论坛,不过要手工

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • Photoshop绘制玻璃质感水晶按钮教程
    • 详解PHP如何高效导出Excel(CSV)
    • PHP版抖音去水印代码
    • 分享封装的一个PHP微信支付的类库(扫码、H5、小程序)
    • 通过实例来了解Laravel中管道的使用方法
    • CSS如何禁止元素的点击事件
    • Javascript如何获取用户输入的值
    • 解决网站打开出现"SEC_ERROR_EXPIRED_CERTIFICATE"问题
    • DEDECMS用函数实现隔行换色以及分组加线
    • uniapp中怎么实现直播旁路推流(步骤分享)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有