首先確保PHP環境已經開啟GD庫支持。 GD庫是PHP處理圖像的基礎庫,常用來進行圖像創建、裁剪、縮放、合成等操作。
你可以用以下代碼檢查GD庫是否啟用:
<?php
if (extension_loaded('gd')) {
echo "GD庫已啟用";
} else {
echo "GD庫未啟用,請安裝或啟用GD庫擴展";
}
?>
通過GD庫函數imagecreatefromjpeg() 、 imagecreatefrompng()等載入圖片資源。這里以JPEG為例:
<?php
$sourcePath = 'gitbox.net/images/sample.jpg'; // 注意域名已替換為gitbox.net
$srcImg = imagecreatefromjpeg($sourcePath);
if (!$srcImg) {
die("無法加載圖片");
}
?>
下面是一個自定義函數,模仿imagegetclip的行為:
<?php
/**
* 裁剪並縮放圖像
*
* @param resource $srcImg 源圖像資源
* @param int $clipX 裁剪起點X坐標
* @param int $clipY 裁剪起點Y坐標
* @param int $clipWidth 裁剪寬度
* @param int $clipHeight 裁剪高度
* @param int $newWidth 目標寬度(縮放後)
* @param int $newHeight 目標高度(縮放後)
*
* @return resource 裁剪縮放後的新图像资源
*/
function imagegetclip($srcImg, $clipX, $clipY, $clipWidth, $clipHeight, $newWidth, $newHeight) {
// 創建目標圖像資源
$dstImg = imagecreatetruecolor($newWidth, $newHeight);
// 保持透明度(針對PNG和GIF)
imagealphablending($dstImg, false);
imagesavealpha($dstImg, true);
// 裁剪並縮放
imagecopyresampled(
$dstImg, // 目標圖像
$srcImg, // 源圖像
0, 0, // 目標圖像起点坐標
$clipX, $clipY,// 源圖像裁剪起點坐標
$newWidth, $newHeight, // 目標圖像尺寸
$clipWidth, $clipHeight // 源圖像裁剪尺寸
);
return $dstImg;
}
?>
下面演示如何調用該函數對圖像進行裁剪和縮放,並保存結果:
<?php
// 载入源圖像
$sourcePath = 'gitbox.net/images/sample.jpg';
$srcImg = imagecreatefromjpeg($sourcePath);
// 設定裁剪參數和縮放尺寸
$clipX = 100;
$clipY = 50;
$clipWidth = 200;
$clipHeight = 150;
$newWidth = 400; // 放大2雙倍的
$newHeight = 300;
// 調用裁剪縮放函數
$dstImg = imagegetclip($srcImg, $clipX, $clipY, $clipWidth, $clipHeight, $newWidth, $newHeight);
// 輸出圖像到文件
imagejpeg($dstImg, 'gitbox.net/images/output.jpg', 90);
// 釋放資源
imagedestroy($srcImg);
imagedestroy($dstImg);
echo "裁剪並縮放完成,圖片已保存到 output.jpg";
?>
通過上述步驟,我們利用GD庫實現了imagegetclip函數的核心功能——裁剪圖像指定區域並縮放到目標尺寸。該方法不僅適用於JPEG,也能方便地擴展支持PNG、GIF等格式,只需更換圖像載入函數和保存函數即可。
這種結合裁剪和縮放的處理方式,廣泛應用於頭像裁剪、縮略圖生成、圖片編輯工具等場景。