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

php實現(xiàn)上傳圖片生成縮略圖示例

 更新時間:2014年04月13日 09:52:10   作者:  
這篇文章主要介紹了php實現(xiàn)上傳圖片生成縮略圖示例,代碼中有詳細注釋,需要的朋友可以參考下

功能很簡單,代碼中有注釋,直接給大家上代碼了

復(fù)制代碼 代碼如下:

<?php
/**
 * 上傳圖片生成縮略圖
 *
 * 需要GD2庫的支持
 *
 * 初始化時需要參數(shù)new thumbnails('需要縮略的圖片的原始地址','縮略圖的寬度','縮略圖的高度','(可選參數(shù))縮略圖的保存路徑');
 * 如果最后一個參數(shù)不指定,那么縮略圖就默認保存在原始圖片的所在目錄里的small文件夾里,
 * 如果不存在small文件夾,則會自動創(chuàng)建small文件夾
 *
 * 初始化之后需要調(diào)用方法produce創(chuàng)建縮略圖
 * $thumbnails = new thumbnails(''....);
 * $thumbnails->produce();
 *
 * 其中可以獲取原始圖片的相關(guān)信息,寬度、高度、和圖片mime
 *
 * $thumbnails->getImageWidth(); //int 圖片寬度
 * $thumbnails->getImageHeight(); // int 圖片高度
 * $thumbnails->getImageMime(); // string 圖片的mime
 *
 * $thumbnails->trueSize(); //array 這是一個包含圖片等比例縮略之后的寬度和高度值的數(shù)組
 * $size = array('width'=>'','height'=>'');
 * 獲取圖片等比縮略之后的寬度和高度
 * $size['width']//等比縮略圖的寬度
 * $size['height']//等比縮略圖的高度
 *
 */
class thumbnails{

 private $imgSrc; //圖片的路徑
 private $saveSrc; //圖片的保存路徑,默認為空
 private $canvasWidth; //畫布的寬度
 private $canvasHeight; //畫布的高度
 private $im; //畫布資源
 private $dm; //復(fù)制圖片返回的資源

 /**
  * 初始化類,加載相關(guān)設(shè)置
  *
  * @param $imgSrc 需要縮略的圖片的路徑
  * @param $canvasWidth 縮略圖的寬度
  * @param $canvasHeight 縮略圖的高度
  */
 public function __construct($imgSrc,$canvasWidth,$canvasHeight,$saveSrc=null)
 {
  $this->imgSrc = $imgSrc;
  $this->canvasWidth = $canvasWidth;
  $this->canvasHeight = $canvasHeight;
  $this->saveSrc = $saveSrc;
 }

 /**
  * 生成縮略圖
  */
 public function produce()
 {
  $this->createCanvas();
  $this->judgeImage();
  $this->copyImage();
  $this->headerImage(); 
 }

 /**
  * 獲取載入圖片的信息
  *
  * 包含長度、寬度、圖片類型
  *
  * @return array 包含圖片長度、寬度、mime的數(shù)組
  */
 private function getImageInfo()
 {
  return getimagesize($this->imgSrc);
 }

 /**
  * 獲取圖片的長度
  *
  * @return int 圖片的寬度
  */
 public function getImageWidth()
 {
  $imageInfo = $this->getImageInfo();
  return $imageInfo['0'];
 }

 /**
  * 獲取圖片高度
  *
  * @return int 圖片的高度
  */
 public function getImageHeight()
 {
  $imageInfo = $this->getImageInfo();
  return $imageInfo['1'];
 }

 /**
  * 獲取圖片的類型
  *
  * @return 圖片的mime值
  */
 public function getImageMime()
 {
  $imageInfo = $this->getImageInfo();
  return $imageInfo['mime'];
 }

 /**
  * 創(chuàng)建畫布
  *
  * 同時將創(chuàng)建的畫布資源放入屬性$this->im中
  */
 private function createCanvas()
 {
  $size = $this->trueSize();
  $this->im = imagecreatetruecolor($size['width'],$size['height']);
 }

 /**
  * 判斷圖片的mime值,確定使用的函數(shù)
  *
  * 同時將創(chuàng)建的圖片資源放入$this->dm中
  */
 private function judgeImage()
 {
  $mime = $this->getImageMime();
  switch ($mime)
  {
   case 'image/png':$dm = imagecreatefrompng($this->imgSrc);
   break;

   case 'image/gif':$dm = imagecreatefromgif($this->imgSrc);
   break;

   case 'image/jpg':$dm = imagecreatefromjpeg($this->imgSrc);
   break;

   case 'image/jpeg':$dm = imagecreatefromgjpeg($this->imgSrc);
   break;
  }
  $this->dm = $dm;
 }

 /**
  * 判斷圖片縮略后的寬度和高度
  *
  * 此寬度和高度也作為畫布的尺寸
  *
  * @return array 圖片經(jīng)過等比例縮略之后的尺寸
  */
 public function trueSize()
 {
  $proportionW = $this->getImageWidth() / $this->canvasWidth;
  $proportionH = $this->getImageHeight() / $this->canvasHeight;

  if( ($this->getImageWidth() < $this->canvasWidth) && ($this->getImageHeight() < $this->canvasHeight) )
  {
   $trueSize = array('width'=>$this->getImageWidth(),'height'=>$this->getImageHeight());
  }
  elseif($proportionW >= $proportionH)
  {
   $trueSize = array('width'=>$this->canvasWidth,'height'=>$this->getImageHeight() / $proportionW);
  }
  else
  {
   $trueSize = array('width'=>$this->getImageWidth() / $proportionH,'height'=>$this->canvasHeight);
  }
  return $trueSize;
 }

 /**
  * 將圖片復(fù)制到新的畫布上面
  *
  * 圖片會被等比例的縮放,不會變形
  */
 private function copyImage()
 {
  $size = $this->trueSize();
  imagecopyresized($this->im, $this->dm , 0 , 0 , 0 , 0 , $size['width'] , $size['height'] , $this->getImageWidth() , $this->getImageheight());
 }

 /**
  * 將圖片輸出
  *
  * 圖片的名稱默認和原圖片名稱相同
  *
  * 路徑為大圖片當前目錄下的small目錄內(nèi)
  *
  * 如果small目錄不存在,則會自動創(chuàng)建
  */
 public function headerImage()
 {
  $position = strrpos($this->imgSrc,'/');
  $imageName = substr($this->imgSrc,($position + 1));
  if($this->saveSrc)
  {
   $imageFlode = $this->saveSrc.'/';
  }
  else
  {
   $imageFlode = substr($this->imgSrc,0,$position).'/small/';
  }
  if(!file_exists($imageFlode))
  {
   mkdir($imageFlode);
  }
  $saveSrc = $imageFlode.$imageName;
  imagejpeg($this->im,$saveSrc);
 } 
}

相關(guān)文章

  • 詳解Yaf框架PHPUnit集成測試方法

    詳解Yaf框架PHPUnit集成測試方法

    這篇文章主要介紹了詳解Yaf框架PHPUnit集成測試方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • PHP解碼unicode編碼的中文字符代碼分享

    PHP解碼unicode編碼的中文字符代碼分享

    晚上在抓取某網(wǎng)站數(shù)據(jù),結(jié)果在數(shù)據(jù)包中發(fā)現(xiàn)了這么一串編碼的數(shù)據(jù):"......\u65b0\u6d6a\u5fae\u535a......", 這其實是中文被unicode編碼后了的數(shù)據(jù),我現(xiàn)在就是想解碼出中文來,上度娘搞了半天,試了很多的姿(方)勢(法),終于搞定了。
    2014-08-08
  • php中引用符號(&)的使用詳細介紹

    php中引用符號(&)的使用詳細介紹

    php的引用就是在變量或者函數(shù)、對象等前面加上&符號,在PHP 中引用的意思是:不同的名字訪問同一個變量內(nèi)容,下面介紹如何使用PHP的引用,需要的朋友可以參考下
    2016-12-12
  • PHP將數(shù)據(jù)導(dǎo)出Excel表中的實例(投機型)

    PHP將數(shù)據(jù)導(dǎo)出Excel表中的實例(投機型)

    下面小編就為大家?guī)硪黄狿HP將數(shù)據(jù)導(dǎo)出Excel表中的實例(投機型)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • PHP 壓縮文件夾的類代碼

    PHP 壓縮文件夾的類代碼

    PHP 壓縮文件夾的類代碼,需要的朋友可以參考下。
    2009-11-11
  • Symfony2之session與cookie用法小結(jié)

    Symfony2之session與cookie用法小結(jié)

    這篇文章主要介紹了Symfony2之session與cookie用法,結(jié)合實例形式總結(jié)分析了Symfony框架針對session與cookie的設(shè)置、獲取及刪除等操作的實現(xiàn)方法,需要的朋友可以參考下
    2016-03-03
  • php封裝的smartyBC類完整實例

    php封裝的smartyBC類完整實例

    這篇文章主要介紹了php封裝的smartyBC類,通過自定義類實現(xiàn)針對Smarty2的有效兼容與擴展,需要的朋友可以參考下
    2016-10-10
  • 基于PHP的簡單采集數(shù)據(jù)入庫程序【續(xù)篇】

    基于PHP的簡單采集數(shù)據(jù)入庫程序【續(xù)篇】

    在上篇 基于PHP的簡單采集數(shù)據(jù)入庫程序 中提到采集新聞信息頁的列表數(shù)據(jù),接下來講講關(guān)于采集新聞具體內(nèi)容
    2014-07-07
  • PHP執(zhí)行批量mysql語句的解決方法

    PHP執(zhí)行批量mysql語句的解決方法

    本篇文章介紹了,PHP執(zhí)行批量mysql語句的解決方法,文中列舉示例說明。需要的朋友參考下
    2013-05-05
  • php實現(xiàn)給一張圖片加上水印效果

    php實現(xiàn)給一張圖片加上水印效果

    本文給大家匯總了2個php實現(xiàn)給圖片加水印的功能,第一個比較簡單易懂,第二個功能強大些,而且給大家封裝了起來,有需要的小伙伴可以參考下
    2016-01-01

最新評論

保山市| 哈密市| 游戏| 崇信县| 静安区| 莱西市| 尖扎县| 体育| 察哈| 阜城县| 唐海县| 千阳县| 肃北| 克什克腾旗| 清苑县| 扎赉特旗| 太康县| 芜湖市| 历史| 威信县| 泰和县| 抚州市| 泗阳县| 呈贡县| 资阳市| 平和县| 黄陵县| 广州市| 北票市| 房山区| 荆门市| 宁德市| 阳春市| 涿鹿县| 镇江市| 华容县| 正蓝旗| 乐都县| 东阳市| 乳山市| 开平市|