2019独角兽企业重金招聘Python工程师标准>>>

昨天下午同事问我一个php的问题,就是给图片加水印,php我也一知半解,网上资料找了一通,自己就写了一个加水印的php类。

具体代码如下:

<?php
class WaterGener{private $default_text="Just for test"; private $default_waterpic="girl.jpg";private $default_qulity=75;//默认使用的字体private $font = 'simhei.ttf'; //定义字体//默认的padding 的值private $padding=5;/**构造函数**/function __construct(){}//获取图片类型private function getImage($path){if(!empty($path) && file_exists($path)) {$water_info = @getimagesize($path);$water_im;switch($water_info[2])   {    //取得水印图片的格式  case 1:$water_im = @imagecreatefromgif($path);break;case 2:$water_im = @imagecreatefromjpeg($path);break;case 3:$water_im = @imagecreatefrompng($path);break;default:return 1;}return $water_im;}return -1;}public function buildWaterImage($picture,$logo="",$savePath="demo.jpg"){//需要判断图片的类型,水印图片的类型if(!empty($path) && file_exists($path))return -1;$logoImage =$this->getImage($logo===""?$this->default_waterpic:$logo);$photoImage =$this->getImage($picture);if($photoImage==-1){echo "没有找到图片";return; }imagealphablending($photoImage, true);$logo_size = getimagesize($logo); $logoW = $logo_size[0];$logoH = $logo_size[1];$picture_size = getimagesize($picture); ImageCopy($photoImage, $logoImage, $picture_size[0]-$logoW-$this->padding, $picture_size[1]-$logoH-$this->padding, 0, 0, $logoW, $logoH);ImageJPEG($photoImage,$savePath,$this->default_qulity); // output to browser or fileImageDestroy($photoImage);ImageDestroy($logoImage);echo "success...";} public function buildWaterText($picture,$text="",$savePath="demo.jpg"){//需要判断$photoImage = $this->getImage($picture);ImageAlphaBlending($photoImage, true);$picture_size = getimagesize($picture); $textcolor = imagecolorallocate($photoImage, 255,255, 255);//解决乱码问题//$text = iconv("GB2312", "UTF-8", $text); //将中文字转换为UTF8 imagettftext($photoImage, 20, 0, $this->padding, $picture_size[1]-($this->padding*4), $textcolor, $this->font, $text);//将文字写到图片中//imagestring($photoImage, 5, 0, 0,$text, $textcolor);ImageJPEG($photoImage,$savePath,$this->default_qulity); // output to browserImageDestroy($photoImage);} }
?>

上面代码肯定一些纰漏:

1,水印生成的位置,比如说可以是中间,右上角,右下角,等等。需要完善。

2,如果是加文字水印,文字水印的位置怎么计算?计算每个文字的宽度和高度?这个还有待完善。

3,异常的处理。php里面处理异常,我貌似还没有接触过。

上面代码调用方式:

<?php
include_once "water.class.php";
$water=new WaterGener();
$water->buildWaterImage("girl.jpg","logo.gif","demo1.jpg");
$water->buildWaterText("girl.jpg","开源中国");
?>

LIFE日志

转载于:https://my.oschina.net/Tonyjingzhou/blog/262604

php 给图片加水印相关推荐

  1. golang实现给图片加水印

    2019独角兽企业重金招聘Python工程师标准>>> 最近跟在写golang图片加水印的方法,这里用的是一些基本的功能. package mainimport ("fmt ...

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

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

  3. Java图片处理(二)图片加水印

    图片加水印,是通过图片重叠绘制实现的.实现代码如下: public static void press(String pressImg, String pressText, String target ...

  4. C# 图片加水印例程

    using System; using System.IO; using System.Collections; using System.Drawing; using System.Drawing. ...

  5. Python脚本实现图片加水印

    起步 图片是指由图形.图像等构成的平面媒体,有形式的事物,我们看到的,是图画.照片.拓片等的统称. 为了保护一些原创图片的版权,某些时候我们需要在图片上面,加上水印,当然你可以用Photoshop来做 ...

  6. java 水印 位置_Java实现图片加水印且控制位置和透明度

    Java实现图片加水印且控制位置和透明度 昨天要做一个给图片加水印的功能,不想使用一些插件,就在网上转了一会儿,经过改装成了我需要的功能,代码如下: package org.guhao; import ...

  7. 如何给图片加水印?这三个图片加水印方法,帮你添加花式水印

    大家有没有这样情况,自己好不容易做好的作品发布到网络平台上结果被他人盗用了,很让人气愤,那我们应该如何避免这种情况呢? 其实我们可以给自己的作品加上一些专属的个性化水印,那小伙伴们知道图片加水印怎么操 ...

  8. java 图片加水印不失真_java实现图片加水印效果

    图片加水印代码,这些代码不常用,但是用到的时候需要注意的地方也挺多的,每次都重写比较麻烦,记下来备忘.代码是图片加水印的一般流程,可根据实际项目需要自行修改. 注:代码在JPG和PNG格式图片下测试通 ...

  9. Java为图片加水印

    Java为图片加水印工具类 一.简介 使用Java在图片上加上水印,可以添加文字.图片 编写一个工具类的代码优化和整理 使用建造者模式提高工具类的可配置性 二.效果图 三.基本参数 // ++++++ ...

  10. 七牛 java 加水印_七牛云图片加水印

    目标:用户登录进平台后,他看到的所有图片都要以他的用户名加上水印. 1.首先说下七牛加水印的方法,首先附上官网地址: https://developer.qiniu.com/dora/manual/1 ...

最新文章

  1. valgrind-3.11.0 交叉编译
  2. tomcat 配置异常/404页面
  3. java httpget 设置参数_java 模拟HTTP doPost请求 设置参数 | 学步园
  4. win10动态壁纸怎么设置_手机怎么设置动态壁纸-手机壁纸怎么设置动态
  5. 值得总结!推荐10款超实用的神级办公网站和软件,效率翻倍
  6. win7系统传奇如何架服务器,win7系统如何架设传奇服务端玩游戏更流畅
  7. BZOJ4816 数字表格
  8. 服务器 ssd虚拟内存,ssd虚拟内存设多大
  9. mysql优化的魅力,从20s优化到500ms,仅需三招(荣耀典藏版)
  10. 天猫精灵智能家居对接,及天猫iot官网配置图文讲解(二)
  11. 苹果邮件App漏洞?不要慌
  12. 动态仙人掌 系列题解之一——3464: 动态仙人掌 I
  13. 语句的认识,选择语句和循环语句(2022.11.13)
  14. 绕过 word 文档的密码,对加密文档
  15. 量子计算(二十):量子算法简介
  16. 帝国CMS插件自动采集发布文章插件
  17. My97DatePicker时间控件使用
  18. python把多个人声分离_一段音频中判断多个人声?
  19. Revit2018使用lumion插件DAE格式模型,revit崩溃解决方法
  20. apache-commons-math3-3.6.1源码包

热门文章

  1. python marshal 对象序列化和反序列化
  2. MongoDB中文问题
  3. POJ 2923 Relocation(状压DP)题解
  4. % 取余运算 取模运算
  5. html+jquery翻页相册(原创)
  6. 约瑟夫(环)问题(Josephus problem)
  7. 从客户端(content=span class=Apple-s...)中检测到有潜在危险的 Request.Form 值。
  8. CSSS - CSS幻灯片
  9. 李彦宏被泼水,是“多数人的暴力”还是“群众的宣泄”
  10. 一元(多元)线性回归分析之R语言实现