まず、PHP環境がGDライブラリサポートを有効にしていることを確認してください。 GDライブラリは、画像を処理するPHPの基本ライブラリであり、画像の作成、トリミング、スケーリング、合成、その他の操作によく使用されます。
次のコードを使用して、GDライブラリが有効になっているかどうかを確認できます。
<?php
if (extension_loaded('gd')) {
echo "GDライブラリが有効になっています";
} else {
echo "GDライブラリが有効になっていない,インストールまたは有効にしてくださいGDライブラリエクステンション";
}
?>
GDライブラリ関数を介して画像リソースをロードしてくださいImageCreateFromJPeg() 、 ImageCreateFrommpng()など。ここでは、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、その他の形式のサポートを簡単に拡張できます。画像の読み込み関数を交換し、機能を保存するだけです。
作物とスケーリングを組み合わせたこの処理方法は、アバターの収穫、サムネイルの生成、画像編集ツール、その他のシナリオで広く使用されています。