首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 實現圖片上傳並生成縮略圖的完整類示例

     編輯:PHP 綜合知識

前言

在 Web 開發中,圖片上傳後自動生成縮略圖是常見需求。本文提供一個封裝良好的 PHP 類 thumbnails,支援 GD2 庫,能夠按指定寬高等比例縮放圖片,並自動處理儲存路徑。程式碼結構清晰,適合直接整合到專案中。

類的核心功能

  • 支援 JPEG、PNG、GIF 等主流圖片格式
  • 等比例縮放,避免圖片變形
  • 自動建立預設儲存目錄(small/)
  • 提供取得原圖寬、高、MIME 類型等方法
  • 可自訂縮略圖儲存路徑

使用方式

<?php
require_once 'thumbnails.class.php';

// 初始化:原圖路徑、目標寬、目標高、可選儲存路徑
$thumb = new thumbnails('uploads/photo.jpg', 200, 150, 'thumbs/');

// 生成縮略圖
$thumb->produce();

// 取得原圖資訊
echo '原圖寬度:' . $thumb->getImageWidth() . 'px';
echo '原圖高度:' . $thumb->getImageHeight() . 'px';
echo 'MIME 類型:' . $thumb->getImageMime();

// 取得等比縮放後的實際尺寸
$size = $thumb->trueSize();
echo '縮略圖寬度:' . $size['width'] . 'px';
echo '縮略圖高度:' . $size['height'] . 'px';
?>

類別原始碼解析

類別包含以下關鍵私有方法:

  • createCanvas():依據計算出的尺寸建立真彩色畫布
  • judgeImage():依 MIME 類型呼叫對應的 imagecreatefrom* 函式載入原圖
  • copyImage():使用 imagecopyresized() 將原圖縮放繪製到畫布
  • headerImage():處理檔案命名與儲存,預設輸出 JPEG 格式

注意事項

  1. 伺服器必須啟用 GD2 擴展
  2. 儲存目錄需具備寫入權限
  3. 目前 headerImage() 強制輸出 JPEG,若需保留透明背景(PNG/GIF)可自行擴展
  4. 原始碼中 imagecreatefromgjpeg 為筆誤,正確應為 imagecreatefromjpeg

進階建議

實際專案中建議:

  • 加入檔案型別與大小驗證
  • 使用 imagecopyresampled() 取代 imagecopyresized() 以獲得更好畫質
  • 支援 WebP 等現代格式
  • 加入錯誤例外處理機制
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved