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 相关文章推荐
Oracle Faq(Oracle的版本)
Oct 09 PHP
PHP 开发环境配置(Zend Server安装)
Apr 28 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
php使用for语句输出三角形的方法
Jun 09 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
thinkphp实现附件上传功能
May 26 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 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
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
基于命令行执行带参数的php脚本并取得参数的方法
2016/01/25 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
Python2与Python3的区别实例分析
2019/04/11 Python
Python实战之制作天气查询软件
2019/05/14 Python
说出一些常用的类,包,接口
2014/09/22 面试题
经济担保书范文
2014/04/02 职场文书
媒体宣传策划方案
2014/05/25 职场文书
任命书怎么写
2014/06/04 职场文书
小班上学期个人总结
2015/02/12 职场文书
承诺书范本大全
2015/05/04 职场文书
小学运动会报道稿
2015/07/22 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
Python实现排序方法常见的四种
2021/07/15 Python
php去除deprecated的实例方法
2021/11/17 PHP
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python
Python如何加载模型并查看网络
2022/07/15 Python
css弧边选项卡的项目实践
2023/05/07 HTML / CSS