xgnic 发表于 2018-2-11 12:11:13


            本文实例为大家分享了多功能php图片处理类,供大家参考,具体内容如下
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);
    //获取新的图片资源,处理透明背景
    $new$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;
      }
       $back$this->Img_resouce($backname, $backinfo);
      
       $water$this->Img_resouce($watername, $waterinfo);
       var_dump($backimg);exit();
       $back$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),1));
      $imageSize=filesize($img);
      $Info=array(
      "width" => $imageInfo,
      "height" => $imageInfo,
      "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':
       $($name);
         break;
      case 'jpg':
       $($name);
         break;
      case 'png':
       $($name);
         break;            
   }
   return $img;
}
/**
   +--------------------------------------------------
   * 获取等比缩放尺寸函数
   +--------------------------------------------------
   * @param unknown $name
   * @param unknown $width
   * @param unknown $height
   * @param unknown $imaginfo
   * @return Ambigous
   */
private function getNewSize($name,$width,$height,$imaginfo){
       $size['width']=$imaginfo['width'];
       $size['height']=$imaginfo['height'];
    if ($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){
    //新建一个真彩色图像
    $new($size['width'], $size['height']);
    //将某个颜色定义为透明色
    $otsc=imagecolortransparent($imageres);
    //获取图像的调色板的颜色数目
    if ($otsc>=0&&$otscpath.$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']$posX,'posY'=>$posY);
   }
   /**
    +-------------------------------------------------------------------
    * 拷贝图像
    +-------------------------------------------------------------------
    * @param unknown $back背景资源
    * @param unknown $water水印资源
    * @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;
   }
   
}
?>
页: [1]
查看完整版本: 分享php多功能图片处理类