使用 PHP GD 函式庫的 imagecopyresampled() 可實現高品質的圖片區域裁切、縮放與重採樣。本文透過實際程式碼範例,詳細解析各參數含義與應用技巧。
<?php
// 設定輸出為 JPEG 格式
header('Content-Type: image/jpeg');
$sourceFile = 'book_rabbit_rule.jpg';
$srcImg = imagecreatefromjpeg($sourceFile);
// 目標尺寸:120x42
$dstWidth = 120;
$dstHeight = 42;
$dstImg = imagecreatetruecolor($dstWidth, $dstHeight);
// 核心裁切與縮放操作
// 參數順序:目標圖像、來源圖像、目標X、目標Y、來源X、來源Y、目標寬、目標高、來源寬、來源高
imagecopyresampled($dstImg, $srcImg, 0, 0, 7, 174, $dstWidth, $dstHeight, $dstWidth, $dstHeight);
// 輸出並釋放資源
imagejpeg($dstImg);
imagedestroy($dstImg);
imagedestroy($srcImg);
| 參數位置 | 參數名稱 | 說明 | 範例值 |
|---|---|---|---|
| 1 | $dst_im | 目標圖像資源(由 imagecreatetruecolor 建立) | $dstImg |
| 2 | $src_im | 來源圖像資源(由 imagecreatefromjpeg 等建立) | $srcImg |
| 3 | $dst_x | 目標圖像起始 X 座標 | 0 |
| 4 | $dst_y | 目標圖像起始 Y 座標 | 0 |
| 5 | $src_x | 來源圖像裁切起始 X 座標 | 7 |
| 6 | $src_y | 來源圖像裁切起始 Y 座標 | 174 |
| 7 | $dst_w | 目標圖像寬度(輸出尺寸) | 120 |
| 8 | $dst_h | 目標圖像高度(輸出尺寸) | 42 |
| 9 | $src_w | 來源圖像裁切區域寬度 | 120 |
| 10 | $src_h | 來源圖像裁切區域高度 | 42 |
優先使用 imagecreatetruecolor() 建立真彩色目標圖像,搭配 imagecopyresampled() 的雙立方插值演算法,輸出品質遠優於舊版 imagecopyresized()。處理大量圖片時,記得以 imagedestroy() 及時釋放記憶體。