PHP开发的文字水印,缩略图,图片水印实现类与用法示例


Posted in PHP onApril 12, 2019

本文实例讲述了PHP开发的文字水印,缩略图,图片水印实现类与用法。分享给大家供大家参考,具体如下:

1.实现类ImageToTest.class.php参考代码

class ImageToTest {
  /**
   * 图片的基本信息
   */
  private $info;
  private $image;
  public function __construct($src){
    $info = getimagesize($src);
    $this->info = array(
      'width'=> $info[0],
      'height'=> $info[1],
      'type'=> image_type_to_extension($info[2],false),
      'mime'=>$info['mime']
    );
    $fun = "imagecreatefrom{$this->info['type']}";
    $this->image = $fun($src);
  }
  /**
   * 操作图片 (压缩)
   */
  public function thumb($width,$height){
    $image_thumb = imagecreatetruecolor($width,$height);
    imagecopyresampled($image_thumb,$this->image,0,0,0,0,$width,$height,
      $this->info['width'],$this->info['height']);
    imagedestroy($this->image);
    $this->image = $image_thumb;
  }
  /**
   * 操作图片(添加文字水印)
   */
  public function fontMark($content,$font_url,$size,$color,$local,$angle){
    $col = imagecolorallocatealpha($this->image,$color[0],$color[1],$color[2],$color[3]);
    imagettftext($this->image,$size,$angle,$local['x'],$local['y'],$col,$font_url,$content);
  }
  /**
   * 操作图片(添加水印图片)
   */
  public function imageMark($source,$local,$alpha){
    //1.获取水印图片的基本信息
    $info2 = getimagesize($source);
    //2.通过水印的图片编号来获取水印的图片类型
    $type2 = image_type_to_extension($info2[2],false);
    //3.在内存中创建一个和我们的水印图像一致的图像类型
    $func2 = "imagecreatefrom{$type2}";
    //4.把水印图片复制到内存中
    $water = $func2($source);
    //5.合并图片
    imagecopymerge($this->image,$water,$local['x'],$local['y'],0,0,$info2[0],$info2[1],$alpha);
    //6.销毁水印图片
    imagedestroy($water);
  }
  /**
   * 在浏览器中输出图片
   */
  public function show(){
    header("Content-type:".$this->info['mime']);
    $funs = "image{$this->info['type']}";
    $funs($this->image);
  }
  /**
   * 把图片保存到硬盘里
   */
  public function save($newName){
    $funs = "image{$this->info['type']}";
    $funs($this->image,'./outPut/'.$newName.'.'.$this->info['type']);
  }
  /**
   * 销毁图片 使用析构函数
   */
  public function __destruct()
  {
    imagedestroy($this->image);
  }
}

2.测试参考代码

require_once('ImageToTest.class.php');
/*$src = './image/wbg.jpg';
$image = new ImageToTest($src);
$image->thumb(700,550);
$image->show();*/
/*$src2 = './image/wbg.jpg';
$content = 'SGC';
$font_url = './image/YGYcuhei.ttf';
$size = 33;
$color = array(
  0=>2,
  1=>222,
  2=>222,
  3=>60
);
$local = array(
  'x'=>20,
  'y'=>100
);
$angle = 10;
$image2 = new ImageToTest($src2);
$image2->fontMark($content,$font_url,$size,$color,$local,$angle);
$image2->show();
$image2->save('hahahah');*/
$src3 = './image/wbg.jpg';
$source = './image/water.jpg';
$local = array(
  'x'=>20,
  'y'=>100
);
$font_url = './image/YGYcuhei.ttf';
$size = 38;
$color = array(
  0=>2,
  1=>222,
  2=>222,
  3=>60
);
$alpha = 60;
$angle = 50;
$image3 = new ImageToTest($src3);
$image3->imageMark($source,$local,$alpha);
$image3->thumb(700,550);
$image3->fontMark('Hello',$font_url,$size,$color,$local,$angle);
$image3->show();
$image3->save('WAWAWAWAWA');

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
写一个用户在线显示的程序
Oct 09 PHP
PHP实现采集程序原理和简单示例代码
Mar 18 PHP
php简单静态页生成过程
Mar 27 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
关于PHP语言构造器介绍
Jul 08 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
Oct 27 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
php微信开发之关注事件
Jun 14 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 PHP
详解PHP素材图片上传、下载功能
Apr 12 #PHP
laravel 事件/监听器实例代码
Apr 12 #PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 #PHP
laravel使用Faker数据填充的实现方法
Apr 12 #PHP
Laravel5.7 Eloquent ORM快速入门详解
Apr 12 #PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 #PHP
PHP中的Iterator迭代对象属性详解
Apr 12 #PHP
You might like
PHP网上调查系统
2006/10/09 PHP
php cache类代码(php数据缓存类)
2010/04/15 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
Discuz不使用插件实现简单的打赏功能
2019/03/21 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
js判断浏览器的比较全的代码
2007/02/13 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
Vue下路由History模式打包后页面空白的解决方法
2018/06/29 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
Django 使用easy_thumbnails压缩上传的图片方法
2019/07/26 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
女性时尚网购:Chic Me
2019/07/30 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
大学活动总结格式
2014/04/29 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书