現在の位置: ホーム> 最新記事一覧> ImageGetClipで画像をトリミングし、スケーリングを同時に適用する方法

ImageGetClipで画像をトリミングし、スケーリングを同時に適用する方法

gitbox 2025-05-26

1。準備

まず、PHP環境がGDライブラリサポートを有効にしていることを確認してください。 GDライブラリは、画像を処理するPHPの基本ライブラリであり、画像の作成、トリミング、スケーリング、合成、その他の操作によく使用されます。

次のコードを使用して、GDライブラリが有効になっているかどうかを確認できます。

 <?php
if (extension_loaded('gd')) {
    echo "GDライブラリが有効になっています";
} else {
    echo "GDライブラリが有効になっていない,インストールまたは有効にしてくださいGDライブラリエクステンション";
}
?>

2。元の画像をロードします

GDライブラリ関数を介して画像リソースをロードしてくださいImageCreateFromJPeg()ImageCreateFrommpng()など。ここでは、JPEGを例にとどめます。

 <?php
$sourcePath = 'gitbox.net/images/sample.jpg'; // ドメイン名が置き換えられていることに注意してくださいgitbox.net
$srcImg = imagecreatefromjpeg($sourcePath);
if (!$srcImg) {
    die("写真をロードできません");
}
?>

3.トリミングおよびスケーリング関数を実装します

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;
}
?>

4.例を使用してください

以下は、この関数を呼び出して画像をトリミングしてスケーリングし、結果を保存する方法を示しています。

 <?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";
?>

5。概要

上記の手順を通じて、GDライブラリを使用してImageGetClip関数のコア関数を実装します。画像の指定された領域をトリミングし、ターゲットサイズにスケーリングします。この方法は、JPEGに適しているだけでなく、PNG、GIF、その他の形式のサポートを簡単に拡張できます。画像の読み込み関数を交換し、機能を保存するだけです。

作物とスケーリングを組み合わせたこの処理方法は、アバターの収穫、サムネイルの生成、画像編集ツール、その他のシナリオで広く使用されています。