PHP 给图片制做水印的方法

咱们常常能在图片上看到一些水印,通常分为图片文字或者是两种一块儿的结合。那为何要加水印呢?目的是为了防止别人盗图、造假或者标注出处等,保护图片原做者的著做权或是劳动成果。那么给图片加水印就很是有必要了。php

怎么用PHP实现给图片加水印呢?html

先来看看效果
watermarkweb

使用GD库

使用GD库来实现效果
图像处理和 GD - 手册
正所谓授人以鱼不如授人以渔,光贴代码不讲实现过程的,都是耍流氓。因此下面我会写功能的实现过程、过程所须要用到的函数。浏览器

内容基本都是干货,须要用到的时候能够方便查阅资料

关键函数

下面是php实现两种水印方式的关键函数:函数

两种水印的实现方式

图片水印

准备两张图片字体

  • 原图
  • 水印图

实现过程

  1. 在php中加载这两张图片,获得一个图像资源数据类型。
    根据不一样的图片格式,使用对应函数spa

    它们甚至能够加载一张来自网上的图片
  2. 读取图片宽高。.net

  3. 可能你会须要将水印图进行缩小或放大(若是不须要,能够跳过这一步)
    等比例缩放3d

    1. 计算缩放比例,根据想要缩放到的值(好比一张宽度是500px的图片,想缩小成50px)
    2. 计算缩放以后的宽高
    3. 建立一个新的图像资源(新图像的宽高等于缩放以后的宽高)
      imagecreatetruecolor 新建一个真彩色图像
    4. 拷贝部分图像并调整大小
      imagecopyresized 拷贝部分图像并调整大小code

      参数说明(为了方便理解,我对参数进行了语义化)
      imagecopyresized(目标图像资源, 原图资源, 粘到目标图像的起始水平坐标, 粘到目标图像的起始垂直坐标, 拷贝原图的起始水平坐标, 拷贝原图的起始垂直坐标, 最终想要的宽度, 最终想要的高度, 原图的宽度, 原图的高度);
  4. 使用imagecopymerge函数,拷贝水印图并合并到原图中。

    简单分析形参都有哪些(为了方便理解,我对参数进行了语义化)
    imagecopymerge(原图资源, 水印图资源, 水印水平坐标, 水印垂直坐标, 拷贝水印图的起始水平坐标, 拷贝水印图的起始垂直坐标, 要拷贝的宽度, 要拷贝的高度, 水印透明度);
    • 水印透明度:透明度范围是0-100
  5. 输出图像
    函数关键字image+图片格式 更多查看官方手册

  6. 释放图像资源

文字水印

简单分析形参都有哪些(为了方便理解,我对参数进行了语义化)

imagettftext(图像资源, 文字尺寸, 文字角度, 文字水平坐标, 文字垂直坐标, 文字颜色, 字体, 文本文字)
  • 文字尺寸

GD库版本是1时,单位是像素(px),版本是2时,单位是点/磅(pt)
px,pt,em换算表

  • 文字水平垂直基点位置

字符的左下角为基本点

  • 文字颜色

颜色索引,经过imagecolorallocate函数建立

  • 字体

字体的绝对路径

其余参考


若是这对你有帮助,或者能帮你节省一些时间,不如,点个赞吧~

原文地址

相关文章
相关标签/搜索