好文档 - 专业文书写作范文服务资料分享网站

分享php多功能图片处理类 

天下 分享 时间: 加入收藏 我要投稿 点赞

本文实例为大家分享了多功能php图片处理类,供大家参考,具体内容如下 <?php  /** 

 * Image.class.php 图像处理类   * @author Administrator   *   */

class Image{ 

  private $path='';    /** 

   * 构造方法 

   * @param unknown $path     */

  function __construct($path=''){      if (!empty($path)) { 

      $this->path=$path;      }    }    /** 

   +-----------------------------------------------     * 等比缩放函数 

   +----------------------------------------------- 

   * @param unknown $name 需处理图片的名称     * @param unknown $width 缩放后的宽度     * @param unknown $height 缩放后的高度 

   * @param string $thumb_prixs 缩放后的前缀名     * @return mixed $newname 返回的缩放后的文件名     */

  function thumb($name,$width,$height,$thumb_prixs='th_'){      //获取图片信息 

    $Info=$this->ImageInfo($name); //图片的宽度,高度,类型      //获取图片资源,各种类型的图片都可以创建资源,jpg,gif,png      $imagres=$this->Img_resouce($name, $Info);      //获取计算图片等比例之后的大小, 

    $size=$this->getNewSize($name,$width,$height,$Info);      //获取新的图片资源,处理透明背景 

    $newimg=$this->getImage($imagres,$size,$Info);      //另存为一个新的图片,返回新的缩放后的图片名称      $newname=$this->SaveNewImage($newimg,$thumb_prixs.$name,$Info);      return $newname;     } 

  /** 

   +-----------------------------------------------------------------------     * 水印标记函数 

   +-----------------------------------------------------------------------     * @param unknown $backname  背景文件名     * @param unknown $watername 水印文件名     * @param number $waterpos  水印位置     * @param string $wa_prixs  水印前缀名     * @return boolean     */

  function waterMark($backname,$watername,$waterpos=0,$wa_prixs='wa_') {      if (file_exists($this->path.$backname) && file_exists($this->path.$watername)) { 

      $backinfo=$this->ImageInfo($backname);        $waterinfo=$this->ImageInfo($watername);        if(!$pos=$this->getPos($backinfo, $waterinfo, $waterpos)){ 

        echo \水印图片不应该比背景图片小\         return false;        }         $backimg=$this->Img_resouce($backname, $backinfo); 

       $waterimg=$this->Img_resouce($watername, $waterinfo); 

       var_dump($backimg);exit(); 

       $backimg=$this->CopyImage($backimg, $waterimg, $pos, $waterinfo); 

       $this->SaveNewImage($backimg, $wa_prixs.$backname, $backinfo); 

    }else{ 

      echo \图片或水印不存在\       return false;      }    }    /** 

   +-----------------------------------------------------------------------     * 获取图片信息函数 

   +-----------------------------------------------------------------------     * @param unknown $name     * @return unknown     */

   private function ImageInfo($img) {      $imageInfo=getimagesize($img); 

    if ($imageInfo!==false) {        $imageType=strtolower(substr(image_type_to_extension($imageInfo[2]),1));        $imageSize=filesize($img);        $Info=array( 

        \         \         \         \

        \       ); 

      return $Info;      }else{ 

      return false;      }      }    /** 

   +--------------------------------------------------------     * 创建原图像格式函数 

   +--------------------------------------------------------     * @param unknown $name     * @param unknown $imaginfo     * @return boolean|resource     */

  private function Img_resouce($name,$imageinfo){      $iamgeres=$this->path.$name;      //var_dump($iamgeres);exit(); 

     switch ($imageinfo['type']) {        case 'gif': 

       $img=imagecreatefromgif($name);           break;        case 'jpg': 

       $img=imagecreatefromjpeg($name);           break;        case 'png': 

       $img=imagecreatefrompng($name); 

         break;             

     } 

     return $img;    }    /** 

   +--------------------------------------------------     * 获取等比缩放尺寸函数 

   +--------------------------------------------------     * @param unknown $name     * @param unknown $width     * @param unknown $height     * @param unknown $imaginfo 

   * @return Ambigous <unknown, number>     */

  private function getNewSize($name,$width,$height,$imaginfo){         $size['width']=$imaginfo['width'];         $size['height']=$imaginfo['height'];      if ($width<$imaginfo['width']) {        $size['width']=$width;      } 

    if ($height<$imaginfo['height']) {        $size['height']=$height;      } 

    //图像等比例缩放算法 

    if ($imaginfo['width']*$size['width']>$imaginfo['height']*$size['height']) {        $size['height']=round($imaginfo['height']*$size['width']/$imaginfo['width']);      }else{        $size['width']=round($imaginfo['width']*$size['height']/$imaginfo['height']);      } 

    return $size;     } 

  private function getImage($imageres,$size,$imageinfo){      //新建一个真彩色图像 

    $newimg=imagecreatetruecolor($size['width'], $size['height']);      //将某个颜色定义为透明色 

    $otsc=imagecolortransparent($imageres);      //获取图像的调色板的颜色数目 

    if ($otsc>=0&&$otsc<=imagecolorstotal($imageres)) { 

      //取得某索引的颜色 

      $stran=imagecolorsforindex($imageres, $otsc);        //为图像分配颜色 

      $newt=imagecolorallocate($imageres, $stran['red'], $stran['green'], $stran['blue']); 

      //区域填充函数 

      imagefill($newimg, 0, 0, $newt);        //为图像定义透明色 

      imagecolortransparent($newimg,$newt);     

    } 

    imagecopyresized($newimg, $imageres, 0, 0, 0, 0, $size['width'], $size['height'], $imageinfo['width'], $imageinfo['height']);        imagedestroy($imageres);      return $newimg;      }     /** 

    +----------------------------------------------      *保存图像函数 

    +----------------------------------------------      * @param unknown $newimg      * @param unknown $newname      * @param unknown $imageinfo      * @return unknown  

    */

   private function SaveNewImage($newimg,$newname,$imageinfo){      switch ($imageinfo['type']){        case 1://gif          $result=imagegif($newimg,$this->path.$newname);          break;        case 2://jpg          $result=imagejpeg($newimg,$this->path.$newname);          break;        case 3://png          $result=imagepng($newimg,$this->path.$newname);          break;      } 

    imagedestroy($newimg);      return $newname;     }           /** 

    +-----------------------------------------------------------------      * 获取水印位置函数 

    +-----------------------------------------------------------------      * @param unknown $backinfo  背景信息      * @param unknown $waterinfo  水印信息      * @param unknown $waterpos  水印位置      * @return boolean|multitype:number 返回坐标数组      */

分享php多功能图片处理类 

本文实例为大家分享了多功能php图片处理类,供大家参考,具体内容如下<?php /**  *Image.class.php图像处理类  *@authorAdministrator  *  */<
推荐度:
点击下载文档文档为doc格式
62xt01cxjs862m61dk4v721et5ixw1005ow
领取福利

微信扫码领取福利

微信扫码分享