加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP生成图片缩略图类案例

发布时间:2023-06-02 12:40:19 所属栏目:PHP教程 来源:
导读:本文实例讲述了PHP生成图片缩略图类。分享给大家供大家参考,具体如下:classApp_image_helper { protected$imgFileName; protected$imgWidth; protected$imgHeight; protected$imgMime; protected$imgRes

本文实例讲述了PHP生成图片缩略图类。分享给大家供大家参考,具体如下:

classApp_image_helper { 

  protected$imgFileName; 

  protected$imgWidth; 

  protected$imgHeight; 

  protected$imgMime; 

  protected$imgResource; 

  static $imgMineList 

    =array( 

      'jpeg'=>'image/jpeg', 

      'gif'=>'image/gif', 

      'png'=>'image/png', 

      'wbmp'=>'image/wbmp', 

    ); 

  /** 

   * 根据文件名,初始化图片, 

   * 计算出给定图片的宽、高、图片类型,并获取图片的资源保存到内存,便于下次使用 

   * App_image_helper constructor. 

   * 

   * @param $fileName 

   */ 

  publicfunction__construct($fileName) { 

    $this->imgFileName =$fileName; 

    list($this->imgWidth,$this->imgHeight,$this->imgMime) =$this->getImageInfo($this->imgFileName); 

    $this->imgResource =$this->getImageResource($this->imgFileName); 

  } 

  /** 

   * 根据图片路径获取相关宽、高、MIME类型信息 

   * 

   * @param $fileName 

   * 

   * @return array|null 

   */ 

  protectedfunctiongetImageInfo($fileName) { 

    $result= null; 

    if(is_file($fileName) ) { 

      $tmpImageInfo=getimagesize($fileName); 

      if($tmpImageInfo) { 

        $result=array($tmpImageInfo[0],$tmpImageInfo[1],$tmpImageInfo['mime']); 

      } 

    } 

    return$result; 

  } 

  /** 

   * 将图片文件转为资源类类型 

   * 

   * @param $fileName 

   * 

   * @return null|resource 

   */ 

  protectedfunctiongetImageResource($fileName) { 

    $image= null; 

    if(is_file($fileName) ) { 

      switch($this->imgMime) { 

        caseself::$imgMineList['jpeg']: 

          $image= imagecreatefromjpeg($fileName); 

          break; 

        caseself::$imgMineList['gif']: 

          $image= imagecreatefromgif($fileName); 

          break; 

        caseself::$imgMineList['png']: 

          $image= imagecreatefrompng($fileName); 

          break; 

        caseself::$imgMineList['wbmp']: 

          $image= imagecreatefromwbmp($fileName); 

          break; 

        default: 

          break; 

      } 

    } 

    return$image; 

  } 

  /** 

   * 可根据固定宽,等比缩放图片;或根据百分比,等比缩放图片 

   * 

   * @param int $width 

   * @param int $percent 

   * 

   * @return array|null 

   */ 

  protectedfunctiongetSizeByScale($width= 360,$percent= 1) { 

    $result= null; 

    if($this->imgWidth &&$this->imgHeight ) { 

      if($width) { 

        $result=array($width,intval($width*$this->imgHeight /$this->imgWidth)); 

      }elseif($percent) { 

        $result=array(intval($this->imgWidth *$percent),intval($this->imgHeight *$percent)); 

      } 

    } 

    return$result; 

  } 

  /** 

   * 外调 

   * 

   * @param int $percentOrWidth int整数表示图片缩放为固定宽度,0.0~0.99999表示缩放百分比 

   * @param null $fileName 

   * @param int $quality 

   * @param bool $reSample    重新采样图片,默认是 

   * 

   * @return bool 

   */ 

  publicfunctioncreateImage($percentOrWidth= 1,$fileName= null,$quality= 75,$reSample= true) { 

    $result= false; 

    $fileName? header('Content-Type: '.$this->imgMime) : false; 

    $size=$this->getSizeByScale(($percentOrWidth<= 1) ? null :$percentOrWidth,$percentOrWidth); 

    if($size) { 

      $thumb= imagecreatetruecolor($size[0],$size[1]); 

      if($reSample) { 

        imagecopyresampled($thumb,$this->imgResource, 0, 0, 0, 0,$size[0],$size[1],$this->imgWidth,$this->imgHeight); 

      }else{ 

        imagecopyresized($thumb,$this->imgResource, 0, 0, 0, 0,$size[0],$size[1],$this->imgWidth,$this->imgHeight); 

      } 

      $result= imagejpeg($thumb,$fileName,$quality); 

    } 

    return$result; 

  } 

}

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!