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. 新报告直指3大安全威胁 企业需小心应对
  2. PE格式详细讲解4 - 系统篇04|解密系列
  3. SQL 中的 AND OR
  4. BZOJ-3171-循环格-TJOI2013-费用流
  5. 爱酷pro充电测试软件,iQOO 5 Pro续航、充电测试简报
  6. lombok null字段不显示 继承_Lombok 要知道的 8 个点
  7. 2021年春季学期期末统一考试 西方经济学(本) 试题
  8. C++ STL 学习笔记 3. 文本文件操作
  9. php如何写一个能让外部访问的接口,如何写一个接口供外界访问
  10. 列表视图案例2——显示用户列表
  11. UI设计摘要背景素材|简单分层PSD格式化模板,为项目增加背景
  12. 洛谷题解(持续更新)
  13. 5G:认识5G关键技术
  14. Redis读书笔记(一)Redis可以做什么
  15. 斐讯路由做php,斐讯K2路由双WiFi网速叠加教程
  16. 有比鸿蒙还强的境界吗,《庄子》鸿蒙问道:看似愚昧,实则为大境界
  17. ubuntu 18改MAC桌面
  18. ECMAScript6词法
  19. 下一轮WiFi革命来临:详解高通MU-MIMO技术(Multi-User Multiple-Input Multiple-Output多用户多入多出技术)
  20. 【算法】leetcode-838 推多米诺

热门文章

  1. IP-Guard桌面申请管理说明步骤
  2. 苹果首席设计师:iPhone X 耗时五年,设计要等技术赶上
  3. 11.selenium登录126邮箱出现定位问题解决
  4. 软式棒垒球运动进校园
  5. UITT不忘初心,为交易而生
  6. JS处理时间格式国际标准化的方法
  7. QCA-WIFI如何编译IPQ8074代码
  8. 互联网产品经理必读书籍
  9. 机器学习--特征降维方法总结
  10. 2D shape decompositions二维形状分解