给自己网站上的图片添加水印, 在图片上留下属于自己的信息, 这有两个好处: 一是宣传自己的品牌, 二是就算带图片的文章被转载了, 也会自动的留下了版权
本文主要实现了 php 图片上传自动给图片加水印, 在下篇中我会给出用 php 添加文字水印的代码
php 给图片加水印其实很简单, 没有想象的那么神奇, 就是利用了 php 里面的一个 GD 库说起 GD 库, 其实就是 php 里面一个专门用于处理图片有关的扩展, 比如我们熟悉的验证码生成缩略图, 包括今天所说的 php 给图片加水印都是要有 GD 库的支持
提示: 新安装的 php 环境, 可能需要开启 GD 库, 开启方法: 打开 php.ini, 去掉 extension=php_gd2.dll 前面的; 然后重启 apache/iis 即可
实现并不复杂, 核心代码还不到 20 行, 主要是掌握几个函数就行了
实现源码:
- <?php
- $ori_img = "images/13801220684507.jpg"; // 原图
- $water_img = "logo.png"; // 水印
- $new_img = "images/daixiaorui.jpg"; // 生成水印后的图片
- $original = getimagesize($ori_img); // 得到图片的信息, 可以 print_r($original) 发现它就是一个数组
- $watermark = getimagesize($water_img);
- $s_original = imgCreateFrom($ori_img, $original[2]); //$original[2] 是图片类型, 其中 1 表示 gif2 表示 jpg3 表示 png
- $s_watermark = imgCreateFrom($water_img, $watermark[2]);
- $posX = $original[0] - $watermark[0] - 6; //X 坐标 (右下角)
- $poxY = $original[1] - $watermark[1] - 3; //Y 坐标 (右下角)
- // 打水印
- imagecopy($s_original, $s_watermark, $posX, $poxY, 0, 0, $watermark[0], $watermark[1]);
- //header("Content-type:image/jpeg");
- //imagejpeg($s_original); // 向浏览器输出图片
- $loop = imagejpeg($s_original, $new_img); // 生成新的图片 (jpg 格式), 如果用 imagepng 可以生成 png 格式
- if ($loop) {
- echo "水印添加成功!";
- }
- // 根据文件类型 创建一个新图象
- function imgCreateFrom($img_src, $val) {
- switch ($val) {
- case 1:
- $img = imagecreatefromgif($img_src);
- break;
- case 2:
- $img = imagecreatefromjpeg($img_src);
- break;
- case 3:
- $img = imagecreatefrompng($img_src);
- break;
- }
- return $img;
- }
- ?-->
给图片添加水印除了用基础的 GD 库实现, 其实还可以 ImageMagick 这个工具, 它的功能更强大, 不过一般没多大需求, 就用上面这个代码了
来源: https://www.php1.cn/detail/php-fb0f2ef09f.html