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 25 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
mysql总结之explain
Feb 27 PHP
利用curl 多线程 模拟 并发的详解
Jun 14 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
PHP 使用redis简单示例分享
Mar 05 PHP
摘自织梦CMS中的图片处理类
Aug 08 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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
php在字符串中查找另一个字符串
2008/11/19 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
PHP strripos函数用法总结
2019/02/11 PHP
JS 判断代码全收集
2009/04/28 Javascript
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
2016/01/14 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
Vue底层实现原理总结
2018/02/17 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
JavaScript栈和队列相关操作与实现方法详解
2018/12/07 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
Python通过字典映射函数实现switch
2020/11/06 Python
10张动图学会python循环与递归问题
2021/02/06 Python
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
大门门卫岗位职责
2013/11/30 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
整改报告格式
2014/11/06 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
Python中requests库的用法详解
2022/06/05 Python
服务器SVN搭建图文安装过程
2022/06/21 Servers