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 调用远程url的六种方法小结
Nov 02 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
PHP随机数生成代码与使用实例分析
Apr 08 PHP
mac下安装nginx和php
Nov 04 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
用php守护另一个php进程的例子
Feb 13 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 PHP
PHP实现随机发放扑克牌
Apr 21 PHP
Laravel框架源码解析之反射的使用详解
May 14 PHP
php字符串倒叙
Apr 01 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笔记之常用文件操作
2010/10/12 PHP
PHP运行时强制显示出错信息的代码
2011/04/20 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
PHP微信支付开发实例
2016/06/22 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
phpinfo的知识点总结
2019/10/10 PHP
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
js模拟类继承小例子
2010/07/17 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
vue实现选中效果
2020/10/07 Javascript
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python每天必学之bytes字节
2016/01/28 Python
Pycharm导入Python包,模块的图文教程
2018/06/13 Python
pandas分别写入excel的不同sheet方法
2018/12/11 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
python实现桌面托盘气泡提示
2019/07/29 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
Python实现疫情地图可视化
2021/02/05 Python
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
慈善晚会策划方案
2014/05/14 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
村干部任职承诺书
2015/01/21 职场文书
安全保证书格式
2015/02/28 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
青年教师听课心得体会
2016/01/15 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers