资讯专栏INFORMATION COLUMN

PHP 给图片制作水印的方法

sixgo / 910人阅读

摘要:我们经常能在图片上看到一些水印,一般分为图片文字或者是两种一起的结合。那么给图片加水印就非常有必要了。怎么用实现给图片加水印呢先来看看效果使用库使用库来实现效果图像处理和手册正所谓授人以鱼不如授人以渔,光贴代码不讲实现过程的,都是耍流氓。

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

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

先来看看效果

使用GD库

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

</>复制代码

  1. 内容基本都是干货,需要用到的时候可以方便查阅资料
关键函数

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

imagettftext 用 TrueType 字体向图像写入文本

imagecopymerge 拷贝并合并图像的一部分

两种水印的实现方式 图片水印

准备两张图片

原图

水印图

实现过程

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

</>复制代码

  1. 它们甚至可以加载一张来自网上的图片

读取图片宽高。

imagesx 取得图像宽度

imagesy 取得图像高度

getimagesize 取得图像大小

getimagesizefromstring 从字符串中获取图像尺寸信息

可能你会需要将水印图进行缩小或放大(如果不需要,可以跳过这一步)
等比例缩放

计算缩放比例,根据想要缩放到的值(比如一张宽度是500px的图片,想缩小成50px)

计算缩放之后的宽高

创建一个新的图像资源(新图像的宽高等于缩放之后的宽高)
imagecreatetruecolor 新建一个真彩色图像

拷贝部分图像并调整大小
imagecopyresized 拷贝部分图像并调整大小

</>复制代码

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

使用imagecopymerge函数,拷贝水印图并合并到原图中。

</>复制代码

  1. 简单分析形参都有哪些(为了方便理解,我对参数进行了语义化)
    imagecopymerge(原图资源, 水印图资源, 水印水平坐标, 水印垂直坐标, 拷贝水印图的起始水平坐标, 拷贝水印图的起始垂直坐标, 要拷贝的宽度, 要拷贝的高度, 水印透明度);

水印透明度:透明度范围是0-100

输出图像
函数关键字image+图片格式 更多查看官方手册

imagejpeg 输出图象到浏览器或文件。

imagepng

imagegif

imagewbmp

...

</>复制代码

  1. 如果要输出到浏览器中,需要设置content-type头部

header - 手册 发送原生 HTTP 头

常用对照表

释放图像资源

imagedestroy 销毁图像

文字水印

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

</>复制代码

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

文字尺寸

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

文字水平垂直基点位置

字符的左下角为基本点

文字颜色

颜色索引,通过imagecolorallocate函数创建

字体

字体的绝对路径

其他参考

绝对详解PHP 的imageTtfText()函数


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

原文地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29600.html

相关文章

  • js初级应用之canvas制作图片水印

    摘要:在出现之前,项目中的图片添加水印的需求,必定是后端同学们来处理的,但是出来之后,前端终于可以站出来说,这个需求,交给我来壮哉我大前端,上周的任务就是在前端处理水印的效果,这个效果最重要的逻辑其实就几行代码,至于如何优雅的将这些简单的逻辑封装 在canvas出现之前,项目中的图片添加水印的需求,必定是后端同学们来处理的,但是canvas出来之后,前端终于可以站出来说,这个需求,交给我来!...

    xiaowugui666 评论0 收藏0
  • php图片添加文字或图片水印实现代码(二种加水印方法)

    摘要:有时上传图片时,需要给图片添加水印,水印一般为文字或图片水印,下面就来看看两种添加方法。拷贝并合并图像的一部分更多库函数用法,请查手册相关文章实现图片上传时添加文字和图片水印 有时上传图片时,需要给图片添加水印,水印一般为文字或图片logo水印,下面就来看看两种添加方法。 一、文字水印 文字水印就是在图片上加上文字,主要使用gd库的imagefttext方法,并且需要字体文件。效果图如...

    CoderStudy 评论0 收藏0
  • PHP图片操作

    摘要:保持原图长宽比,以图片的长度,或者宽度中,最小的一个为准,尽可能填充整个缩略图的画框,只显示原图中的某一部分。涉及到的相关图片操作函数如下创建黑色图片获取图片相关信息一个图片中的一部分到另外一个图片输出图片具体使用方法请查看相关手册。 1, PHP 中 图片的处理 要 依靠于扩展库, 可以选择gd2,或者imagemagick 第一步,首先要开启gd2的扩展库,在phpinfo() 中...

    yacheng 评论0 收藏0
  • php图片水印处理

    摘要:在上周的工作中,第一次接触和了解对图像的相关处理。在图像的处理中主要依赖于拓展,其主要的操作方法可以参考手册,链接和图像处理。 在上周的工作中,第一次接触和了解php对图像的相关处理。php在图像的处理中主要依赖于GD拓展,其主要的操作方法可以参考php手册,链接:GD 和图像处理。我回顾了此次工作中的功能开发,封装了一个图像处理的相关类库。 Image类库 主体功能:图片合成,水印...

    sunnyxd 评论0 收藏0
  • 水印图片隐写术

    摘要:其实隐藏文件和盲水印都属于图片隐写术。图片隐写术隐写术也是数字水印的一种应用,双方可利用隐藏在数字信号中的信息进行沟通。图片隐写术只是其中一种,有兴趣的同学可以看下面这本书。盲水印一、演示首先看 这是一张女朋友解码水印接下来我们输入一行神奇的命令:python bwm.py --action decode --origin Demo.jpg --im ../Gakki.jpg --resul...

    Tecode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<