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模拟HTTP认证
Oct 09 PHP
一个PHP操作Access类(PHP+ODBC+Access)
Jan 02 PHP
php权重计算方法代码分享
Jan 09 PHP
php使用递归函数实现数字累加的方法
Mar 16 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
Zend Framework基本页面布局分析
Mar 19 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 PHP
PHP封装的PDO数据库操作类实例
Jun 21 PHP
PHP实现的AES双向加密解密功能示例【128位】
Sep 03 PHP
PHP微信网页授权的配置文件操作分析
May 29 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
php中用文本文件做数据库的实现方法
2008/03/27 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
php制作简单模版引擎
2016/04/07 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
微信小程序 图片宽高自适应详解
2017/05/11 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
浅谈ElementUI中switch回调函数change的参数问题
2018/08/24 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
一步步教你用Python实现2048小游戏
2017/01/19 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
python实现高斯投影正反算方式
2020/01/17 Python
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
财务总监管理岗位职责
2014/03/08 职场文书
委托公证书范本
2014/04/03 职场文书
预备党员公开承诺书
2014/05/28 职场文书
住房抵押登记委托书
2014/09/27 职场文书
看上去很美观后感
2015/06/10 职场文书
公司宣传语大全
2015/07/13 职场文书
redis实现的四种常见限流策略
2021/06/18 Redis