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如何得到当前页和上一页的地址?
Nov 27 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
php 冒泡排序 交换排序法
May 10 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
PHP网站建设的流程与步骤分享
Sep 25 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
php+mysql查询实现无限下级分类树输出示例
Oct 03 PHP
yii2使用gridView实现下拉列表筛选数据
Apr 10 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
Jun 03 PHP
Yii 使用intervention/image拓展实现图像处理功能
Jun 22 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 15 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
分析 JavaScript 中令人困惑的变量赋值
2007/08/13 Javascript
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
5款Javascript颜色选择器
2009/10/25 Javascript
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
往光标所在位置插入值的js代码
2013/09/22 Javascript
Javascript的闭包详解
2014/12/26 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
vue配置多页面的实现方法
2018/05/22 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
学校募捐倡议书
2014/05/14 职场文书
法律专业自荐信
2014/06/03 职场文书
商铺门前三包责任书
2014/07/25 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
2015年初三班主任工作总结
2015/05/21 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL