最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP基于GD庫的縮略圖生成代碼(支持jpg,gif,png格式)

 更新時間:2014年06月19日 10:13:10   投稿:hebedich  
你可能會遇到這樣的問題,在用戶上傳了一張圖片后,得到這張圖片的縮略圖,PHP可以使用GD庫生成縮略圖,那么我們來探討下,如何才能生成高質(zhì)量的縮略圖呢?

還是老規(guī)矩,直接上代碼

<?php
/**
 * 縮略圖生成類,使用示例:
 */

$newimage=new ImageResize();
$newimage->resize("tu.jpg","tu_lit.jpg",1000,1000);
echo $newimage->GetLastError();

class ImageResize{
  private $localimage;//原圖路徑
  private $remoteimage;//縮略圖保存路徑
  private $localinfo;//原圖屬性
  private $error;
      
  function resize($localimg, $remoteimg, $x, $y) {
    //檢測是否支持gd圖像處理
    if(!$this->_checkenv()){
      return false;
    }
    $this->localimage = $localimg;
    $this->remoteimage = $remoteimg;
    $this->localinfo = getimagesize($this->localimage); //獲取本地圖像的信息
    return $this->_resize($x,$y);
  }
  /**
   * 檢測當前環(huán)境是否支持GD
   */
  private function _checkenv(){
    if(!function_exists('gd_info')){
      $this->error[]="當前環(huán)境不支持GD圖像處理,請先安裝GD庫并開啟PHP相關(guān)擴展";
      return false;
    }
    return true;
  }
  
  /**
   * 生成縮略圖主函數(shù)
   * @param int $x 指定的縮略圖寬度
   * @param int $y 指定的縮略圖高度
   * @return boolean
   */
  private function _resize($x,$y){
    if(!$this->localinfo){
      $this->error[]="本地圖像文件不存在";
      return false;
    }
    //創(chuàng)建圖像句柄
    $im=@$this->_create($this->localinfo[2]);
    if(!$im){
      $this->error[]="當前GD庫不支持圖像類型:{$this->localinfo['mime']}";
      return false;
    }
    $dstsize=$this->_dstsize($x, $y);
    $dstim=@imagecreatetruecolor($dstsize["width"],$dstsize["height"]);
    $whitecolor=@imagecolorallocatealpha($dstim, 0, 0, 0,127);
    imagefill($dstim,0,0,$whitecolor);
    $re=@imagecopyresampled($dstim, $im, 0, 0, 0, 0, $dstsize["width"], $dstsize["height"], $this->localinfo[0], $this->localinfo[1]);
    if(!$re){
      $this->error[]="圖像重新采樣失敗";
      return false;
    }
    if(!imagejpeg($dstim, $this->remoteimage)){
      if(!imagepng($dstim,$this->remoteimage)){
        if(!imagegif($dstim,$this->remoteimage)){
          $this->error[]="保存縮略圖到{$this->remoteimage}失敗,請檢查gd環(huán)境是否正常和縮略圖文件夾的寫入權(quán)限。";
          return false;
        }
      }
    }
    $this->error[]="success";
    return true;
  }
  
  /**
   * 根據(jù)本地圖片類型,創(chuàng)建圖片資源
   * @param 圖像類型代碼 $code
   * @return resource/boolean 成功則返回resourse失敗則返回false
   */
  private function _create($code){
    $src=$this->localimage;
    switch ($code){
      case 1:
        return imagecreatefromgif($src);
        break;
      case 2:
        return imagecreatefromjpeg($src);
        break;
      case 3:
        return imagecreatefrompng($src);
        break;
      default :
        return false;
        break;
    }
  }
  
  /**
   * 按比例計算合適的寬度
   * @param int $x 指定的縮略圖寬度
   * @param int $y 指定的縮略圖高度
   * @return array 包含調(diào)整后的縮略圖寬度和高度
   */
  private function _dstsize($x,$y){
    list($srcwidth,$srcheight)=$this->localinfo;
    if(($srcwidth/$srcheight)<($x/$y)){
      $x=floor($y*$srcwidth/$srcheight);
    }else{
      $y=floor($x*$srcheight/$srcwidth);
    }
    $dstsize["width"]=$x;
    $dstsize["height"]=$y;
    return $dstsize;
  }


  /**
   * 獲取最后一條錯誤信息
   * return string
   */
  function GetLastError(){
    return array_pop($this->error);
  }
  
  /**
   * 獲取所有錯誤信息
   * return array
   */
  function GetAllError(){
    return $this->error;
  }
}

相關(guān)文章

  • win7系統(tǒng)配置php+Apache+mysql環(huán)境的方法

    win7系統(tǒng)配置php+Apache+mysql環(huán)境的方法

    如何在win7系統(tǒng)下配置php環(huán)境呢,php+Apache+mysql都是在配置過程中必不可少的元素,下面通過本篇文章給大家介紹win7系統(tǒng)配置php+Apache+mysql環(huán)境的方法,感興趣的朋友一起來學習
    2015-08-08
  • PHP如何使用Memcached

    PHP如何使用Memcached

    memcached是高性能的分布式內(nèi)存緩存服務(wù)器。一般的使用目的是,通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應用的速度、提高可擴展性。本文給大家介紹PHP如何使用Memcached,感興趣的朋友一起學習吧
    2016-04-04
  • CI框架學習筆記(二) -入口文件index.php

    CI框架學習筆記(二) -入口文件index.php

    本文介紹的是CI框架的入口文件index.php的相關(guān)資料,需要的朋友可以參考下
    2014-10-10
  • 使用正則去除php代碼中的注釋方法

    使用正則去除php代碼中的注釋方法

    下面小編就為大家?guī)硪黄褂谜齽t去除php代碼中的注釋方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 基于laravel where的高級使用方法

    基于laravel where的高級使用方法

    今天小編就為大家分享一篇基于laravel where的高級使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • 最新評論

    博客| 新蔡县| 普格县| 荣昌县| 潜江市| 寿光市| 浠水县| 张掖市| 龙里县| 江永县| 天台县| 区。| 津南区| 宝山区| 荥阳市| 蒲江县| 德阳市| 宜宾县| 玉山县| 土默特右旗| 双柏县| 潜江市| 天水市| 阿克陶县| 启东市| 嵩明县| 赞皇县| 寻乌县| 邵阳县| 凉山| 巴彦县| 焦作市| 图木舒克市| 惠水县| 子洲县| 东乡族自治县| 巨野县| 桂平市| 凤冈县| 买车| 南和县|