足球游戏_中国足彩网¥体育资讯$

分享php多功能图片处理类
来源:易贤网 阅读:823 次 日期:2016-08-22 15:19:32
温馨提示:易贤网小编为您整理了“分享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( 

        "width" => $imageInfo[0], 

        "height" => $imageInfo[1], 

        "type" => $imageType, 

        "size" => $imageSize, 

        "mime" => $imageInfo['mime'] 

      ); 

      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 返回坐标数组 

    */

   private function getPos($backinfo,$waterinfo,$waterpos) { 

    if ($backinfo['width']<$waterinfo['width']||$backinfo['height']<$waterinfo['height']) { 

      return false; 

    } 

    switch ($waterpos) { 

        

      case 1://左上角 

        $posX=0; 

        $posY=0; 

         break; 

      case 2://中上方 

        $posX=$backinfo['width']-$waterinfo['width']/2; 

        $posY=0; 

         break; 

      case 3://右上角 

        $posX=$backinfo['width']-$waterinfo['width']; 

        $posY=0; 

         break; 

      case 4://左中方 

        $posX=0; 

        $posY=$backinfo['height']-$waterinfo['height']/2; 

         break; 

      case 5://正中间 

        $posX=$backinfo['width']-$waterinfo['width']/2; 

        $posY=$backinfo['height']-$waterinfo['height']/2; 

         break; 

      case 6://右中方 

        $posX=$backinfo['width']-$waterinfo['width']; 

        $posY=$backinfo['height']-$waterinfo['height']/2; 

         break; 

      case 7://底部靠左 

        $posX=0; 

        $posY=$backinfo['height']-$waterinfo['height']; 

         break; 

      case 8://底部居中 

        $posX=$backinfo['width']-$waterinfo['width']/2; 

        $posY=$backinfo['height']-$waterinfo['height']; 

         break; 

      case 9://底部靠右 

        $posX=$backinfo['width']-$waterinfo['width']; 

        $posY=$backinfo['height']-$waterinfo['height']; 

         break; 

      case 0: 

      default : 

        $posX=rand(0,$backinfo['width']-$waterinfo['width']); 

        $posY=rand(0,$backinfo['height']-$waterinfo['height']); 

         break; 

    } 

    return array('posX'=>$posX,'posY'=>$posY); 

   } 

   /** 

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

    * 拷贝图像 

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

    * @param unknown $backimg   背景资源 

    * @param unknown $waterimg  水印资源 

    * @param unknown $pos     水印位置 

    * @param unknown $waterinfo  水印信息 

    * @return unknown 

    */

   private function CopyImage($backimg,$waterimg,$pos,$waterinfo) { 

    imagecopy($backimg, $waterimg, $pos['posX'], $pos['posY'], 0, 0, $waterinfo['width'], $waterinfo['height']); 

    imagedestroy($waterimg);     

     return $backimg; 

   } 

?>

以上就是本文的全部内容,希望对大家学习PHP程序设计有所帮助。

中国足彩网信息请查看网络编程
易贤网手机网站地址:分享php多功能图片处理类
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 足球游戏_中国足彩网¥体育资讯$ 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标