WEB开发当中,有时候需要为上传图片添加水印,这样可以有效的保护图片被别人盗用,那么怎么快速为图片添加水印呢?今天,我们就以PHP代码的方式来实现为图片添加水印的效果!

水印功能类:water.php

代码没有多少复杂的逻辑,主要传入的几个参数见注释,除了需要传入的原始图片和水印图片外,最终合成的图片可以自定义存储路径和名称,如果没有指定保存路径的话,默认以覆盖原始图片的方式进行保存!

<?phpclass Water
{//导出合成水印的图片/** @prama string $image 原始图片* @prama string $waterImage 水印图片* @prama string $fileName 保存合成水印图片的名称* @prama int $pos 水印在原始图片中的位置(九宫格)** *///入口方法public function make(string $image, string $waterImage, string $fileName = null, int $pos = 3){$this->checkImage($image);$res = $this->resource($image);$this->checkImage($waterImage);$water = $this->resource($waterImage);$position = $this->position($res, $water, $pos);imagecopy($res, $water, $position['x'], $position['y'], 0, 0, imagesx($water), imagesy($water));return $this->showAction($image)($res, $fileName ?? $image);}//图片校验protected function checkImage(string $image){if (!is_file($image) || getimagesize($image) === false) {throw new Exception("File is not image");}}//根据图片获取资源protected function resource(string $image){$info = getimagesize($image);$functions = [1 => 'imagecreatefromgif', 2 => 'imagecreatefromjpeg', 3 => 'imagecreatefrompng'];$call = $functions[$info[2]];return $call($image);}//渲染图片protected function showAction(string $image){$info = getimagesize($image);$functions = [1 => 'imagegif', 2 => 'imagejpeg', 3 => 'imagepng'];return $functions[$info[2]];}//水印位置protected function position($res, $water, int $pos){$info = ['x' => 20, 'y' => 20];switch ($pos) {case 1:$info['x'] = (imagesx($res) / 3 - imagesx($water)) / 2;$info['y'] = (imagesy($res) / 3 - imagesy($water)) / 2;break;case 2:$info['x'] = (imagesx($res) - imagesx($water)) / 2;$info['y'] = (imagesy($res) / 3 - imagesy($water)) / 2;break;case 3:$info['x'] = (imagesx($res) / 3 * 5 - imagesx($water)) / 2;$info['y'] = (imagesy($res) / 3 - imagesy($water)) / 2;break;case 4:$info['x'] = (imagesx($res) / 3 - imagesx($water)) / 2;$info['y'] = (imagesy($res) - imagesy($water)) / 2;break;case 5:$info['x'] = (imagesx($res) - imagesx($water)) / 2;$info['y'] = (imagesy($res) - imagesy($water)) / 2;break;case 6:$info['x'] = (imagesx($res) / 3 * 5 - imagesx($water)) / 2;$info['y'] = (imagesy($res) - imagesy($water)) / 2;break;case 7:$info['x'] = (imagesx($res) / 3 - imagesx($water)) / 2;$info['y'] = (imagesy($res) / 3 * 5 - imagesy($water)) / 2;break;case 8:$info['x'] = (imagesx($res) - imagesx($water)) / 2;$info['y'] = (imagesy($res) / 3 * 5 - imagesy($water)) / 2;break;case 9:$info['x'] = (imagesx($res) / 3 * 5 - imagesx($water)) / 2;$info['y'] = (imagesy($res) / 3 * 5 - imagesy($water)) / 2;break;default:}return $info;}
}
调用:index.php

实例化Water类,通过类对象调用make方法的时候需要传入原始图片、水印图片、合成水印图片的存储名称以及水印的位置(九宫格,默认值为3,即水印在原始图片的右上角)

<?phpinclude "water.php";
try {$water = new Water();$water->make('img/003.jpg','img/logo.png',"img/003.jpg",3);
}catch (Exception $e){echo $e->getMessage();
}
OK!完成!说不定以后会用到,速度收藏吧!

PHP实现九宫格图片水印功能相关推荐

  1. Java实现添加文字水印、图片水印功能

    Java实现添加水印功能 添加水印 Java 2D API介绍 绘制文字水印 绘制图片水印 循环添加文字水印 添加水印 为图片添加水印的主要作用是保护图片版权,防止图片被未经授权的人使用或传播.为图片 ...

  2. word图文设计:如何用图片水印功能制作日历画册

    新的一年马上来临了,许多人都会换上新的日历.通常大家都是去外面购买,买来的日历总是千篇一律,没有特色.为何不自己新自己动手制作一本专属于自己的个性日历呢?做好后,自己使用或作为礼物送给亲朋好友都很不错 ...

  3. indesign选中不了图片删除_word图文设计:如何用图片水印功能制作日历画册

    编按:新的一年马上来临了,许多人都会换上新的日历.通常大家都是去外面购买,买来的日历总是千篇一律,没有特色.为何不自己新自己动手制作一本专属于自己的个性日历呢?做好后,自己使用或作为礼物送给亲朋好友都 ...

  4. 小飞鱼通达二开 为OA公共文件柜增加图片水印功能的二次开发(图文)

    今天小飞鱼带给大家的一个开发是这样的,在公共文件柜中上传图片时要求增加一个水印的功能,这样标记图片资料后可以减少图片丢失及进行相关责任追溯. 实现效果如下: 上传图片时界面,没有任何更改,直接选择附件 ...

  5. 视频添加图片水印?教你一招,给视频添加自己的水印

    如今短视频行业发展得如火如荼,很多小伙伴都投入短视频的制作中,学会给视频添加水印是很有必要的,如果有小伙伴还不知道视频如何添加水印的话,就来看看小编分享的方法吧!小编演示操作步骤. 第一步,运行视频剪 ...

  6. php网页添加图片的代码,天天查询-PHP版的kindeditor编辑器加图片上传水印功能

    首先简单介绍一下kindeditor编辑器: KindEditor 是一套开源的在线HTML编辑器,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本 ...

  7. php绘图技术加水印,PHP图片添加水印功能示例小结

    本文实例总结了PHP图片添加水印功能.分享给大家供大家参考,具体如下: 例1.很简单图下添加水印函数 /** * 追加水印 * * @param string $source_img 原始图片url ...

  8. kindeditor上传图片php,Kindeditor编辑器添加图片上传水印功能(php代码)

    KindEditor 是一套开源的在线HTML编辑器,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框.可以无缝地与 Java..NET.PH ...

  9. php加水印功能,PHP图片加水印功能

    本篇文章主要介绍PHP图片加水印功能,感兴趣的朋友参考下,希望对大家有所帮助. 实例代码如下:<?php /** * 功能:给一张图片加上水印效果 * $i 要加水印效果的图片 * $t 水印文 ...

最新文章

  1. 公众号群发文章支持添加小程序
  2. Oracle性能调整的误区
  3. 【IE大叔的嘴歪眼斜】之—— 由hasLayout引发的临床CSS Bug表
  4. Hadoop精华问答 | 非大数据的项目能否用Hadoop?
  5. Android笔记-雷电模拟器(Android5.1.1)安装Xposed
  6. node + express + sockio 在线聊天室
  7. 【nebula graph】RPM离线搭建nebula graph集群
  8. BackgroundWorker使用总结
  9. 微信小程序云开发入门详细教程
  10. ubuntu屏幕截图工具
  11. MathType输入花体字
  12. ACPYPE中FAILED: [Errno 2] No such file or directory: 'FFF_AC.prmtop'的解决方法
  13. v4l2驱动框架简介
  14. 微软官网操作系统下载方法
  15. 新旭完成总金额达美金4,000万元C轮融资;波士顿科学两款创新产品同时进入创新医疗器械特别审查程序 | 医药健闻...
  16. 第3章 枚举!很暴力
  17. 为你的NAS开启DDNS服务,独立IP IPV6 可用 - DDNS-GO
  18. Yii 用户登陆机制
  19. uni-app发行微信小程序时报错
  20. 关于防火墙安全及功能简介

热门文章

  1. IDEA如何创建带有 webapp 目录的 maven 项目
  2. html,canvas——星星闪烁
  3. 【正则】包含大写小写字母数字的8到16位的密码正则
  4. [精品毕设]基于Python实现的飞机票销售系统订票系统
  5. python的scipy层次聚类参数详解
  6. Fabled Rooks UVA - 11134 
  7. MacBook Pro电脑一键切换输入法
  8. 石墨文档链接不到服务器,石墨文档怎么打开链接
  9. 人脸识别原理:(初级篇)内含PPT
  10. java中long=后面为什么还要加个L