php面向对象与面向过程两种方法给图片添加文字水印


Posted in PHP onAugust 26, 2015

目前绝大多数PHP程序员使用面向过程的方式,因为解析WEB页面本身就非常“过程化”(从一个标签到另一个标签)。在HTML中嵌入过程处理代码是很直接自然的作法,所以PHP程序员通常使用这种方式。

如果你是刚接触PHP,用面向过程的风格来书写代码很可能是你唯一的选择。但是如果你经常上PHP论坛和新闻组的话,你应该会看到有关“对象”的文章。你也可能看到过如何书写面向对象的PHP代码的教程。或者你也可能下载过一些现成的类库,并尝试着去实例化其中的对象和使用类方法--尽管你可能没有真正理解这些类为什么可以工作,或者为什么需要使用面向对象的方法来实现功能。

应该使用“面向对象”的风格还是“面向过程”的风格?双方各有支持者。像“对象是低效的”或“对象非常棒”这样的议论也时有耳闻。本文不尝试轻易判定两种方法的哪种具有绝对的优势,而是要找出每种方法的优缺点。

1:面向对象的实现利用php给图片添加水印方法

class Image_class {
  private $image;
  private $info;
  /**
   * @param $src:图片路径
   * 加载图片到内存中
   */
  function __construct($src){
    $info = getimagesize($src);
    $type = image_type_to_extension($info[2],false);
    $this -> info =$info;
    $this->info['type'] = $type;
    $fun = "imagecreatefrom" .$type;
    $this -> image = $fun($src);
  }
  /**
   * @param $fontsize: 字体大小
   * @param $x: 字体在图片中的x位置
   * @param $y: 字体在图片中的y位置
   * @param $color: 字体的颜色是一个包含rgba的数组
   * @param $text: 想要添加的内容
   * 操作内存中的图片,给图片添加文字水印
   */
  public function fontMark($fontsize,$x,$y,$color,$text){
    $col = imagecolorallocatealpha($this->image,$color[0],$color[1],$color[2],$color[3]);
    imagestring($this->image,$fontsize,$x,$y,$text,$col);
  }
  /*
   * 输出图片到浏览器中
   */
  public function show(){
    header('content-type:' . $this -> info['mime']);
    $fun='image' . $this->info['type'];
    $fun($this->image);
  }
  /**
   * 销毁图片
   */
  function __destruct(){
    imagedestroy($this->image);
  }
}
//对类的调用
$obj = new Image_class('001.png');
$obj->fontMark(20,20,30,array(255,255,255,60),'hello');
$obj->show();

2: 面向过程的编写利用php给图片添加水印方法:

//指定图片路径
$src = '001.png';
//获取图片信息
$info = getimagesize($src);
//获取图片扩展名
$type = image_type_to_extension($info[2],false);
//动态的把图片导入内存中
$fun = "imagecreatefrom{$type}";
$image = $fun('001.png');
//指定字体颜色
$col = imagecolorallocatealpha($image,255,255,255,50);
//指定字体内容
$content = 'helloworld';
//给图片添加文字
imagestring($image,5,20,30,$content,$col);
//指定输入类型
header('Content-type:'.$info['mime']);
//动态的输出图片到浏览器中
$func = "image{$type}";
$func($image);
//销毁图片
imagedestroy($image);

以上代码示例是介绍php面向对象与面向过程两种方法给图片添加文字水印,希望大家喜欢。

PHP 相关文章推荐
PHP Pear 安装及使用
Mar 19 PHP
PHP Memcached + APC + 文件缓存封装实现代码
Mar 11 PHP
PHP 写文本日志实现代码
May 18 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
PHP 与 UTF-8 的最佳实践详细介绍
Jan 04 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 PHP
php生成静态页面并实现预览功能
Jun 27 PHP
php和C#的yield迭代器实现方法对比分析
Jul 17 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 #PHP
百度地图API使用方法详解
Aug 25 #PHP
PHP实现生成唯一会员卡号
Aug 24 #PHP
PHP实现微信发红包程序
Aug 24 #PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 #PHP
php实现递归的三种基本方式
Jul 04 #PHP
php析构函数的简单使用说明
Aug 24 #PHP
You might like
怎样在UNIX系统下安装php3
2006/10/09 PHP
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
javascript表单事件处理方法详解
2016/05/15 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
详解Python3中ceil()函数用法
2019/02/19 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
Python线程指南分享
2019/11/19 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
大学生职业规划论文
2014/01/11 职场文书
上班离岗检讨书
2014/01/27 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书