在 Web 開發中,圖片縮略圖生成是常見需求。本文介紹一個功能完善的 PHP 類別 resizeimage,它能根據指定寬高生成縮略圖,並提供兩種模式:等比縮放與裁切填充。類別自動偵測圖片格式(JPG、GIF、PNG),並輸出高質量的 JPEG 縮略圖。
cut=1 裁切填充(保持比例、填滿畫布),cut=0 等比縮放(完整顯示、留白)class resizeimage {
var $type; // 圖片類型
var $width; // 原始寬度
var $height; // 原始高度
var $resize_width; // 目標寬度
var $resize_height; // 目標高度
var $cut; // 是否裁切 (1/0)
var $srcimg; // 源圖路徑
var $dstimg; // 目標圖路徑
var $im; // GD 圖片資源
function resizeimage($img, $wid, $hei, $c, $dstpath) { ... }
function initi_img() { ... } // 根據類型建立 GD 資源
function dst_img($dstpath) { ... } // 解析目標路徑
function newimg() { ... } // 核心縮放/裁切邏輯
}
<?php
require_once 'resizeimage.class.php';
// 產生 200x150 裁切模式縮略圖
$thumb = new resizeimage('photo.jpg', 200, 150, 1, 'thumb_photo.jpg');
// 產生 300x300 等比縮放模式
$thumb2 = new resizeimage('photo.png', 300, 300, 0, 'thumb_photo2.jpg');
?>
裁切模式 (cut=1):比較原圖與目標長寬比,以「高度優先」或「寬度優先」方式計算裁切區域,使用 imagecopyresampled 進行高質量重採樣,確保輸出圖片銳利無鋸齒。
等比模式 (cut=0):按比例縮放直到一邊達到目標尺寸,另一邊自動計算,圖片完整顯示於畫布中央。
imagecreatetruecolor、imagecopyresampled 等函式memory_limit)此類別結構清晰、易於擴展,可直接整合至任何 PHP 專案中,滿足電商商品圖、用戶頭像、文章配圖等多種縮略圖需求。