在 Web 開發中,圖片上傳後自動生成縮略圖是常見需求。本文提供一個封裝良好的 PHP 類 thumbnails,支援 GD2 庫,能夠按指定寬高等比例縮放圖片,並自動處理儲存路徑。程式碼結構清晰,適合直接整合到專案中。
small/)<?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 格式headerImage() 強制輸出 JPEG,若需保留透明背景(PNG/GIF)可自行擴展imagecreatefromgjpeg 為筆誤,正確應為 imagecreatefromjpeg實際專案中建議:
imagecopyresampled() 取代 imagecopyresized() 以獲得更好畫質