本文實例講述了PHP生成圖片縮略圖類。分享給大家供大家參考,具體如下:
class App_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 */ public function __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 */ protected function getImageInfo($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 */ protected function getImageResource($fileName) { $image = null; if ( is_file($fileName) ) { switch ($this->imgMime) { case self::$imgMineList['jpeg']: $image = imagecreatefromjpeg($fileName); break; case self::$imgMineList['gif']: $image = imagecreatefromgif($fileName); break; case self::$imgMineList['png']: $image = imagecreatefrompng($fileName); break; case self::$imgMineList['wbmp']: $image = imagecreatefromwbmp($fileName); break; default: break; } } return $image; } /** * 可根據固定寬,等比縮放圖片;或根據百分比,等比縮放圖片 * * @param int $width * @param int $percent * * @return array|null */ protected function getSizeByScale($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 */ public function createImage($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; } }
PS:這裡再為大家推薦幾款比較實用的圖片處理工具供大家參考使用:
在線圖片轉換BASE64工具:
http://tools.jb51.net/transcoding/img2base64
ICO圖標在線生成工具:
http://tools.jb51.net/aideddesign/ico_img
在線Email郵箱圖標制作工具:
http://tools.jb51.net/email/emaillogo
在線圖片格式轉換(jpg/bmp/gif/png)工具:
http://tools.jb51.net/aideddesign/picext
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP圖形與圖片操作技巧匯總》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php面向對象程序設計入門教程》、《PHP網絡編程技巧總結》、《PHP數組(Array)操作技巧大全》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。