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&java(一)
Oct 09 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
Apr 07 PHP
php学习之流程控制实现代码
Jun 09 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
Dec 23 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 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
第十四节--命名空间
2006/11/16 PHP
php 生成WML页面方法详解
2009/08/09 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
如何用php获取文件名后缀
2013/06/09 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
javascript一点特殊用法
2008/05/28 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
如何快速上手Vuex
2017/02/14 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
bootstrap table合并行数据并居中对齐效果
2018/10/17 Javascript
Node.js JSON模块用法实例分析
2019/01/04 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
Python实现动态添加属性和方法操作示例
2018/07/25 Python
Python3离线安装Requests模块问题
2019/10/13 Python
关于numpy数组轴的使用详解
2019/12/05 Python
python标准库OS模块详解
2020/03/10 Python
python使用列表的最佳方案
2020/08/12 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
2014年医院十一国庆节活动方案
2014/09/15 职场文书
小学作文之描写天气
2019/08/15 职场文书
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis