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

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

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

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

<?php
/**
 * 縮略圖生成類(lèi),使用示例:
 */

$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) {
    //檢測(cè)是否支持gd圖像處理
    if(!$this->_checkenv()){
      return false;
    }
    $this->localimage = $localimg;
    $this->remoteimage = $remoteimg;
    $this->localinfo = getimagesize($this->localimage); //獲取本地圖像的信息
    return $this->_resize($x,$y);
  }
  /**
   * 檢測(cè)當(dāng)前環(huán)境是否支持GD
   */
  private function _checkenv(){
    if(!function_exists('gd_info')){
      $this->error[]="當(dāng)前環(huán)境不支持GD圖像處理,請(qǐng)先安裝GD庫(kù)并開(kāi)啟PHP相關(guān)擴(kuò)展";
      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[]="當(dāng)前GD庫(kù)不支持圖像類(lèi)型:{$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}失敗,請(qǐng)檢查gd環(huán)境是否正常和縮略圖文件夾的寫(xiě)入權(quán)限。";
          return false;
        }
      }
    }
    $this->error[]="success";
    return true;
  }
  
  /**
   * 根據(jù)本地圖片類(lèi)型,創(chuàng)建圖片資源
   * @param 圖像類(lèi)型代碼 $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;
    }
  }
  
  /**
   * 按比例計(jì)算合適的寬度
   * @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;
  }


  /**
   * 獲取最后一條錯(cuò)誤信息
   * return string
   */
  function GetLastError(){
    return array_pop($this->error);
  }
  
  /**
   * 獲取所有錯(cuò)誤信息
   * 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都是在配置過(guò)程中必不可少的元素,下面通過(guò)本篇文章給大家介紹win7系統(tǒng)配置php+Apache+mysql環(huán)境的方法,感興趣的朋友一起來(lái)學(xué)習(xí)
    2015-08-08
  • PHP如何使用Memcached

    PHP如何使用Memcached

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

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

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

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

    下面小編就為大家?guī)?lái)一篇使用正則去除php代碼中的注釋方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • 基于laravel where的高級(jí)使用方法

    基于laravel where的高級(jí)使用方法

    今天小編就為大家分享一篇基于laravel where的高級(jí)使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • 最新評(píng)論

    泰来县| 白城市| 广宁县| 武城县| 峨眉山市| 兴仁县| 承德县| 石棉县| 治县。| 福建省| 湘阴县| 五莲县| 宁阳县| 双鸭山市| 浠水县| 长垣县| 裕民县| 虞城县| 平湖市| 依兰县| 孝昌县| 武定县| 丰都县| 常宁市| 孟津县| 出国| 五寨县| 昂仁县| 苍梧县| 库尔勒市| 公主岭市| 高平市| 清远市| 辽阳县| 巴东县| 赤城县| 绥宁县| 商都县| 百色市| 敦煌市| 平山县|