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 信息采集程序代码
Mar 17 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
Jun 17 PHP
php多文件上传实现代码
Feb 20 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 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使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
面向对象的javascript(笔记)
2009/10/06 Javascript
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
谈谈JavaScript中的函数与闭包
2013/04/14 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python实现的矩阵类实例
2017/08/22 Python
django session完成状态保持的方法
2018/11/27 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
python打包生成so文件的实现
2020/10/30 Python
药学专业大专生的自我评价
2013/12/12 职场文书
市场营销职业生涯规划书范文
2014/01/12 职场文书
2014年技术员工作总结
2014/11/18 职场文书
大学生个人学习总结
2015/02/15 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS