1.1  关于静态网页与动态网页,目前绝大多数P

2019-07-15 作者:编程   |   浏览(164)

php对图片文件的操作主要是利用GD库扩展。当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码。当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有了封装成类的想法。
操作图片主要历经四个步骤
1、打开图片
2、操作图片
3、输出图片
4、销毁图片
1,3,4三个步骤每次都要写,每次又都差不多。真正需要变通的只有操作图片的这一步骤了。操作图片又往往通过1或多个主要的GD函数来完成。

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

error_reporting() 函数规定报告哪个错误 。该函数设置当前脚本的错误报告级别。该函数返回旧的错误报告级别。

php简介

<?php 

class Image
{  
  private $info;

  private $image;
  public $type;
  public function __construct($src)
  {

    $this->info=getimagesize($src);
    $this->type=image_type_to_extension($this->info['2'],false);
    $fun="imagecreatefrom{$this->type}";
    $this->image=$fun($src);
  }
  /**
   * 文字水印
   * @param [type] $font   字体
   * @param [type] $content 内容
   * @param [type] $size   文字大小
   * @param [type] $col   文字颜色(四元数组)
   * @param array  $location 位置 
   * @param integer $angle  倾斜角度
   * @return [type]      
   */
  public function fontMark($font,$content,$size,$col,$location,$angle=0){
    $col=imagecolorallocatealpha($this->image, $col['0'], $col['1'], $col['2'],$col['3']);

    imagettftext($this->image, $size, $angle, $location['0'], $location['1'], $col,$font,$content);
  }

  /**
   * 图片水印
   * @param [type] $imageMark 水印图片地址
   * @param [type] $dst    水印图片在原图片中的位置
   * @param [type] $pct    透明度
   * @return [type]      
   */
  public function imageMark($imageMark,$dst,$pct){
    $info2=getimagesize($imageMark);
    $type=image_type_to_extension($info2['2'],false);
    $func2="imagecreatefrom".$type;
    $water=$func2($imageMark);

    imagecopymerge($this->image, $water, $dst[0], $dst[1], 0, 0, $info2['0'], $info2['1'], $pct);
    imagedestroy($water);

  }
  /**
   * 压缩图片
   * @param [type] $thumbSize 压缩图片大小
   * @return [type]      [description]
   */
  public function thumb($thumbSize){
    $imageThumb=imagecreatetruecolor($thumbSize[0], $thumbSize[1]);

    imagecopyresampled($imageThumb, $this->image, 0, 0, 0, 0, $thumbSize[0], $thumbSize[1], $this->info['0'], $this->info['1']);
    imagedestroy($this->image);
    $this->image=$imageThumb;
  }
  /**
  * 裁剪图片
   * @param [type] $cutSize 裁剪大小
   * @param [type] $location 裁剪位置
   * @return [type]      [description]
   */
   public function cut($cutSize,$location){
     $imageCut=imagecreatetruecolor($cutSize[0],$cutSize[1]);

     imagecopyresampled($imageCut, $this->image, 0, 0, $location[0], $location[1],$cutSize[0],$cutSize[1],$cutSize[0],$cutSize[1]);
     imagedestroy($this->image);
     $this->image=$imageCut;
   }
  /**
   * 展现图片
   * @return [type] [description]
   */
  public function show(){
    header("content-type:".$this->info['mime']);

    $funn="image".$this->type;

    $funn($this->image);
  }
  /**
   * 保存图片
 * @param [type] $newname 新图片名
 * @return [type]     [description]
 */
   public function save($newname){
     header("content-type:".$this->info['mime']);

     $funn="image".$this->type;

     $funn($this->image,$newname.'.'.$this->type);
   }
   public function __destruct(){
     imagedestroy($this->image);
   }

 }

 ?>

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

首先要知道error_reporting()函数是用来设置错误级别并返回当前级别的。它有14个错误级别,如下:

当前网络技术发展日新月异,各种基于服务端创建动态网站的脚本语言更是层出不穷。其中PHP以其简单、易用、可移植性强等特点,在众多的动态网站语言技术中独树一帜。那么到底什么是PHP,如何使用PHP?本章将来回答这些问题。通过本章的学习,将使读者对PHP有一个大致的了解,并将学会如何把PHP代码加入普通Web页中。

是不是这样操作就很简单了,如果还需要其他操作,只需要再往这个类里面添加就好啦~~希望大家可以熟练掌握。

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

1    E_ERROR     致命的运行时错误。 错误无法恢复过来。脚本的执行被暂停
2    E_WARNING    非致命的运行时错误。 脚本的执行不会停止
4    E_PARSE     编译时解析错误。解析错误应该只由分析器生成
8    E_NOTICE     运行时间的通知。
16    E_CORE_ERROR   在PHP启动时的致命错误。这就好比一个在PHP核心的E_ERROR
32    E_CORE_WARNING  在PHP启动时的非致命的错误。这就好比一个在PHP核心E_WARNING警告
64    E_COMPILE_ERROR 致命的编译时错误。 这就像由Zend脚本引擎生成了一个E_ERROR
128   E_COMPILE_WARNING 非致命的编译时错误,由Zend脚本引擎生成了一个E_WARNING警告
256   E_USER_ERROR   致命的用户生成的错误。
512   E_USER_WARNING  非致命的用户生成的警告。 
1024   E_USER_NOTICE  用户生成的通知。
2048   E_STRICT     运行时间的通知。

4096   E_RECOVERABLE_ERROR 捕捉致命的错误。

8191   E_ALL来     所有的错误和警告。

1.1  关于静态网页与动态网页

您可能感兴趣的文章:

  • php基于CodeIgniter实现图片上传、剪切功能
  • php实现图片上传、剪切功能
  • php等比例缩放图片及剪切图片代码分享
  • PHP添加图片水印、压缩、剪切的封装类
  • php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
  • php工具型代码之印章抠图

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

好像php默认是不开启错误的,所以你需要配置php.ini文件:

目前网上的网页有静态网页与动态网页两种形式。在讲这两种网页之前,先了解一下网络构成中的客户机(Client)与服务器(Server)。服务器是安装有服务器软件并且可以向客户机提供诸如网页浏览、数据库查询等服务的设备。而客户机则与之相反,它通过客户端软件如网页浏览器从服务器上获得如网页浏览、软件下载等服务。简单地讲,服务器就是服务提供者,而客户机则是服务获得者。

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();

将 display_errors = Off 改为display_errors = On

 1.1.1  传统的静态网页HTML

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

另外还要配置错误级别:将

静态网页的实现模式如图所示: 静态网页有以下几个特点:静态网页不能自动更新。静态网页的内容不随浏览用户、浏览时间等条件的变化而变化。静态网页一经发布,无论浏览者浏览与否,它都是实实在在存在的一个文件,都对应一个URL。用静态网页实现人机交互有相当大的局限性。

//指定图片路径
$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);

error_reporting = E_ALL     改为:

1.1.2  动态网页与传统网页的区别

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

error_reporting = E_ALL & ~E_NOTICE

与静态网页的实现方法不同,动态网页服务的实现过程如下:客户端向服务器提出申请,服务器根据用户请求,把动态网页内部的代码先在服务器上进行相应的处理,再把生成的结果发送给客户端。其模式如图所示:

您可能感兴趣的文章:

  • php实现图片上传时添加文字和图片水印技巧
  • php图片添加文字水印实现代码
  • php给图片添加文字水印方法汇总
  • php给图片加文字水印
  • php文字水印和php图片水印实现代码(二种加水印方法)
  • php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
  • php下图片文字混合水印与缩略图实现代码
  • 随时给自己贴的图片加文字的php水印
  • PHP水印类,支持添加图片、文字、填充颜色区域的实现

应为php默认是显示所有错误的,而有些无害的提示我们不需要显示,所以设置如上!

1.1.2  动态网页与传统网页的区别

本文由小鱼儿玄机30码发布于编程,转载请注明出处:1.1  关于静态网页与动态网页,目前绝大多数P

关键词: 小鱼儿玄机30码