下面给大家分享一下PHP给图片加上图片水印和文字水印实例,这也是网站经常用到的功能,把代码加上去,调用就很简单了。

核心代码:

  1. function imageWaterMark($groundImage, $waterPos = 0, $waterImage = "", $waterText = "", $textFont = 5, $textColor = "#FF0000") {
  2.  
  3. $isWaterImage = FALSE;
  4.  
  5. $formatMsg = "暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。";
  6.  
  7. //读取水印文件
  8.  
  9. if (!empty($waterImage) && file_exists($waterImage)) {
  10.  
  11. $isWaterImage = TRUE;
  12.  
  13. $water_info = getimagesize($waterImage);
  14.  
  15. $water_w = $water_info[0]; //取得水印图片的宽
  16.  
  17. $water_h = $water_info[1]; //取得水印图片的高
  18.  
  19. switch ($water_info[2]) {//取得水印图片的格式
  20. case 1:$water_im = imagecreatefromgif($waterImage);
  21. break;
  22.  
  23. case 2:$water_im = imagecreatefromjpeg($waterImage);
  24. break;
  25.  
  26. case 3:$water_im = imagecreatefrompng($waterImage);
  27. break;
  28.  
  29. default:die($formatMsg);
  30. }
  31. }
  32.  
  33. //读取背景图片
  34.  
  35. if (!empty($groundImage) && file_exists($groundImage)) {
  36.  
  37. $ground_info = getimagesize($groundImage);
  38.  
  39. $ground_w = $ground_info[0]; //取得背景图片的宽
  40.  
  41. $ground_h = $ground_info[1]; //取得背景图片的高
  42.  
  43. switch ($ground_info[2]) {//取得背景图片的格式
  44. case 1:$ground_im = imagecreatefromgif($groundImage);
  45. break;
  46.  
  47. case 2:$ground_im = imagecreatefromjpeg($groundImage);
  48. break;
  49.  
  50. case 3:$ground_im = imagecreatefrompng($groundImage);
  51. break;
  52.  
  53. default:die($formatMsg);
  54. }
  55. } else {
  56.  
  57. die("需要加水印的图片不存在!");
  58. }
  59.  
  60. //水印位置
  61.  
  62. if ($isWaterImage) {//图片水印
  63. $w = $water_w;
  64.  
  65. $h = $water_h;
  66.  
  67. $label = "图片的";
  68. } else {//文字水印
  69. $temp = imagettfbbox(ceil($textFont * 5), 0, "./cour.ttf", $waterText); //取得使用 TrueType 字体的文本的范围
  70.  
  71. $w = $temp[2] - $temp[6];
  72.  
  73. $h = $temp[3] - $temp[7];
  74.  
  75. unset($temp);
  76.  
  77. $label = "文字区域";
  78. }
  79.  
  80. if (($ground_w < $w) || ($ground_h < $h)) {
  81.  
  82. echo "需要加水印的图片的长度或宽度比水印" . $label . "还小,无法生成水印!";
  83.  
  84. return;
  85. }
  86.  
  87. switch ($waterPos) {
  88.  
  89. case 0://随机
  90.  
  91. $posX = rand(0, ($ground_w - $w));
  92.  
  93. $posY = rand(0, ($ground_h - $h));
  94.  
  95. break;
  96.  
  97. case 1://1为顶端居左
  98.  
  99. $posX = 0;
  100.  
  101. $posY = 0;
  102.  
  103. break;
  104.  
  105. case 2://2为顶端居中
  106.  
  107. $posX = ($ground_w - $w) / 2;
  108.  
  109. $posY = 0;
  110.  
  111. break;
  112.  
  113. case 3://3为顶端居右
  114.  
  115. $posX = $ground_w - $w;
  116.  
  117. $posY = 0;
  118.  
  119. break;
  120.  
  121. case 4://4为中部居左
  122.  
  123. $posX = 0;
  124.  
  125. $posY = ($ground_h - $h) / 2;
  126.  
  127. break;
  128.  
  129. case 5://5为中部居中
  130.  
  131. $posX = ($ground_w - $w) / 2;
  132.  
  133. $posY = ($ground_h - $h) / 2;
  134.  
  135. break;
  136.  
  137. case 6://6为中部居右
  138.  
  139. $posX = $ground_w - $w;
  140.  
  141. $posY = ($ground_h - $h) / 2;
  142.  
  143. break;
  144.  
  145. case 7://7为底端居左
  146.  
  147. $posX = 0;
  148.  
  149. $posY = $ground_h - $h;
  150.  
  151. break;
  152.  
  153. case 8://8为底端居中
  154.  
  155. $posX = ($ground_w - $w) / 2;
  156.  
  157. $posY = $ground_h - $h;
  158.  
  159. break;
  160.  
  161. case 9://9为底端居右
  162.  
  163. $posX = $ground_w - $w - 10; // -10 是距离右侧10px 可以自己调节
  164.  
  165. $posY = $ground_h - $h - 10; // -10 是距离底部10px 可以自己调节
  166.  
  167. break;
  168.  
  169. default://随机
  170.  
  171. $posX = rand(0, ($ground_w - $w));
  172.  
  173. $posY = rand(0, ($ground_h - $h));
  174.  
  175. break;
  176. }
  177.  
  178. //设定图像的混色模式
  179.  
  180. imagealphablending($ground_im, true);
  181.  
  182. if ($isWaterImage) {//图片水印
  183. imagecopy($ground_im, $water_im, $posX, $posY, 0, 0, $water_w, $water_h); //拷贝水印到目标文件
  184. } else {//文字水印
  185. if (!emptyempty($textColor) && (strlen($textColor) == 7)) {
  186.  
  187. $R = hexdec(substr($textColor, 1, 2));
  188.  
  189. $G = hexdec(substr($textColor, 3, 2));
  190.  
  191. $B = hexdec(substr($textColor, 5));
  192. } else {
  193.  
  194. die("水印文字颜色格式不正确!");
  195. }
  196.  
  197. imagestring($ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
  198. }
  199.  
  200. //生成水印后的图片
  201.  
  202. @unlink($groundImage);
  203.  
  204. switch ($ground_info[2]) {//取得背景图片的格式
  205. case 1:imagegif($ground_im, $groundImage);
  206. break;
  207.  
  208. case 2:imagejpeg($ground_im, $groundImage);
  209. break;
  210.  
  211. case 3:imagepng($ground_im, $groundImage);
  212. break;
  213.  
  214. default:die($errorMsg);
  215. }
  216.  
  217. //释放内存
  218.  
  219. if (isset($water_info))
  220. unset($water_info);
  221.  
  222. if (isset($water_im))
  223. imagedestroy($water_im);
  224.  
  225. unset($ground_info);
  226.  
  227. imagedestroy($ground_im);
  228. }

文字水印:

  1. waterText('banner.jpg', 9, '','sucaihuo.com'); //背景图片,$waterPos水印位置,水印图片地址

图片水印:

  1. imageWaterMark('404.jpg', 9, 'logo.gif'); //背景图片,$waterPos水印位置,水印图片地址

注意:$waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。

本文转自:https://www.sucaihuo.com/php/265.html 转载请注明出处!

文字水印

PHP给图片加上图片水印和文字水印实例的更多相关文章

  1. java常用开发工具类之 图片水印,文字水印,缩放,补白工具类

    import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  2. 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)

    javaCV图像处理系列: javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体.位置.大小.粗度.翻转.平滑等操作 javaCV图像处理之2:实时视频添加图片水 ...

  3. Java给图片和PDF文件添加水印(图片水印和文字水印)

    有时候我们看到的图片或者PDF文件会自动加上水印.分为文字水印和图片水印. ----------------------------图片水印---------------------------- 1 ...

  4. Thinkphp图片水印和文字水印

    1.Thinkphp图像处理 在TP框架中,我们经常用到图片上传,我最近写了很多关于图片上传的文章,thinkphp图片上传+validate表单验证+图片木马检测+缩略图生成等文章,今天写一下关于图 ...

  5. 利用iTextSharp组件给PDF文档添加图片水印,文字水印

    最近在做关于PDF文档添加水印的功能,折腾了好久,终于好了.以下做个记录: 首先会用到iTextSharp组件,大家可以去官网下载,同时我也会在本文中附加进来. 代码中添加引用为:   using S ...

  6. PHP 使用gd库给图片加图片水印,文字水印,并返回路径

    //图片水印 $mark_filename = './02.jpg'; //获取图片信息 $info = getimagesize($mark_filename); //获取图片的后缀 $type = ...

  7. 为CKEDITOR内容中图片加上 图片服务器路径

    做网站的时候,前台和后台是分开的, 用了CKEDITOR上传图片,但是发现内容带图片的时候,前台Web浏览的时候是一个红X,一看路径不对,上传的到数据库中的是相对的虚拟路径,例如:<img al ...

  8. javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  9. php使用GD库实现图片水印和缩略图——给图片添加文字水印

    今天呢,就来学习一下在php中使用PD库来实现对图片水印的文字水印方法,不需要PS哦! 首先,准备素材 (1)准备一张图片 (2)准备一张水印(最好是透明的,即背景是白色底) (3)准备一中字体(在电 ...

随机推荐

  1. 从KafkaConsumer看看Kafka(一)

      Kafka的消息模型为发布订阅模型,消息生产者将消息发布到主题(topic)中,一个或多个消费者订阅(消费)该主题消息并消费,此模型中发布到topic中的消息会被所有消费者所订阅到,先介绍Kafk ...

  2. Poco的介绍和入门教学

    版权声明:该文章为AirtestProject原创文章:允许转载,但转载必须注明“转载”并保留原链接 前言 前面我们已经介绍了基于图像识别的测试框架Airtest,通过图像识别,已经可以编写大部分的测 ...

  3. [ASP.NET Core 3框架揭秘] 依赖注入[2]:IoC模式

    正如我们在<依赖注入:控制反转>提到过的,很多人将IoC理解为一种"面向对象的设计模式",实际上IoC不仅与面向对象没有必然的联系,它自身甚至算不上是一种设计模式.一般 ...

  4. vue-practice

    vue-完整代码 这是一个完整的vue案例,但是接口似乎都失效了,单是代码本身还是很有参考价值的呦!~ 里面包含了:vue,vue-router,....,还是直接看json文件吧 { "n ...

  5. redhat 常用命令记录

    开机设置网络信息: vim /etc/rc.local 然后在里面输入设置信息   ifconfig eth0:0 192.168.127.130 netmask 255.255.255.0 up i ...

  6. 约瑟夫问题 -- python实现

    问题描述 N个人围成一个圈, 从第一个人开始报数, 报到M的人出圈, 剩下的人继续从1开始报数, 报到M的人出圈;如此往复, 直到所有人出圈. 列表解决 def solution_list(n, m) ...

  7. ASP.NET Core on K8S深入学习(8)数据管理

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 在Docker中我们知道,要想实现数据的持久化(所谓Docker的数据持久化即 ...

  8. ECMAScript 5 特性

    ECMAScript 5 也称为 ES5 和 ECMAScript 2009. ECMAScript 5 特性 这些是 2009 年发布的新特性: "use strict" 指令 ...

  9. Lucene&Solr框架之第三篇

    1.SolrCore的配置 a)schma.xml文件 b)配置中文分析器 2.配置业务域和批量索引导入 a)配置业务域 b)批量索引导入 c)Solrj复杂查询(用Query页面复杂查询.用程序实现 ...

  10. pyhton的安装,环境变量的设置,pycharm的安装下载,中文汉化和字体的设置

    1.下载pycharm https://www.7down.com/soft/336988.html 1.pycharm的汉化下载汉化包:resources_cn.jar    放到pycharm的安 ...