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 相关文章推荐
php 过滤器实现代码
Aug 09 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
php调用c接口无错版介绍
Mar 11 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 PHP
PHP加MySQL消息队列深入理解
Feb 27 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
通过html表格发电子邮件
2006/10/09 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
php有效防止同一用户多次登录
2015/11/19 PHP
bcastr2.0 通用的图片浏览器
2006/11/22 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
浅谈javascript的调试
2015/01/28 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
js匿名函数使用&传参(实例)
2017/09/08 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
Python文件操作基本流程代码实例
2017/12/11 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
python中web框架的自定义创建
2019/09/08 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
关于圣诞节的广播稿
2014/01/26 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
2014年车间工作总结
2014/11/21 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技