ThinkPHP 3.2 內建的 Image 類別(位於 ThinkPHP/Extend/Library/ORG/Util/Image.class.php)提供簡單易用的圖片處理功能,包含縮圖生成、圖片資訊獲取、水印添加等。本文詳細說明縮圖功能的使用方法與注意事項。
<?php
// 1. 匯入類別(ThinkPHP 3.2 命名空間前綴為 ORG)
import("ORG.Util.Image");
// 2. 實例化
$image = new Image();
// 3. 設定圖片路徑(相對於入口檔 index.php)
$imagePath = './Public/Uploads/photo.jpg'; // 假設專案結構
// 4. 獲取圖片資訊(寬、高、類型、大小、MIME 等)
$info = $image::getImageInfo($imagePath);
print_r($info);
/*
輸出範例:
Array
(
[width] => 800
[height] => 600
[type] => 2
[size] => 124580
[mime] => image/jpeg
)
*/
?>
<?php
/**
* 生成縮圖
*
* @param string $srcPath 原圖路徑
* @param string $destPath 縮圖儲存路徑(含檔名)
* @param string $type 圖片類型(jpg、png、gif 等)
* @param int $maxWidth 最大寬度
* @param int $maxHeight 最大高度
* @return bool 成功與否
*/
$result = $image::thumb2(
$imagePath, // 原圖路徑
'./Public/Thumbs/photo_thumb.jpg', // 縮圖路徑
'jpg', // 圖片類型
300, // 最大寬度
200 // 最大高度
);
if ($result) {
echo "✅ 縮圖生成成功!";
} else {
echo "❌ 縮圖生成失敗";
}
?>
| 參數 | 說明 | 注意事項 |
|---|---|---|
$maxWidth | 縮圖最大寬度 | 不能大於原圖寬度,否則生成失敗 |
$maxHeight | 縮圖最大高度 | 不能大於原圖高度,否則生成失敗 |
$type | 輸出格式 | 需與原圖格式相容,建議保持一致 |
| 等比縮放 | 自動保持長寬比 | 實際尺寸可能小於設定的最大值 |
$maxWidth <= 原圖寬 且 $maxHeight <= 原圖高chmod 755 或 chown www:www)php -m | grep gd 確認,或 phpinfo() 查看realpath() 驗證絕對路徑,避免相對路徑混淆memory_limit(如 256M)<?php
$sizes = [
'thumb' => [150, 150], // 正方形縮圖
'medium' => [400, 300], // 中等尺寸
'large' => [800, 600], // 大尺寸(不超過原圖)
];
$originalPath = './Public/Uploads/photo.jpg';
$info = $image::getImageInfo($originalPath);
$origW = $info['width'];
$origH = $info['height'];
foreach ($sizes as $name => [$maxW, $maxH]) {
// 跳過超過原圖尺寸的規格
if ($maxW > $origW || $maxH > $origH) {
echo "⚠️ {$name} 尺寸({$maxW}x{$maxH})超過原圖({$origW}x{$origH}),略過\n";
continue;
}
$destPath = "./Public/Thumbs/photo_{$name}.jpg";
$result = $image::thumb2($originalPath, $destPath, 'jpg', $maxW, $maxH);
echo $result ? "✅ {$name} 生成成功\n" : "❌ {$name} 生成失敗\n";
}
?>
Image::water($src, $water, $pos, $alpha):添加水印(圖片/文字)Image::crop($src, $dest, $width, $height, $x, $y):圖片裁切Image::buildText($text, $font, $size, $color, $bg):生成文字圖片(驗證碼適用)ThinkPHP Image 類別雖功能不如 Intervention Image 豐富,但零依賴、整合框架、輕量級,滿足基本縮圖、水印需求綽綽有餘。