現在の位置: ホーム> 最新記事一覧> ポリゴナル領域(マスク)での画像コンテンツのトリミングのための実装ソリューション

ポリゴナル領域(マスク)での画像コンテンツのトリミングのための実装ソリューション

M66 2025-05-29

PHPのImageOpenPolygon関数を使用して、ポリゴン領域で画像コンテンツをトリミングするソリューション(マスク)を実装する方法は?

導入

画像処理中、特定の領域を収穫する必要性は非常に一般的です。画像のトリミングをさまざまな方法で実現できます。一般的な方法の1つは、 PHPImageopenpolygon関数を使用してポリゴン領域のトリミングを実行することです。この関数を通じて、ポリゴン領域を正確に指定し、画像からこの領域の内容をトリミングできます。次に、画像OpenPolygon関数を使用し、他の機能を組み合わせて画像のトリミング効果を実現する方法について説明します。

基本的なアイデア

ポリゴンエリアのトリミングの基本的なアイデアは次のとおりです。

  1. ポリゴン領域の定義:ポリゴンの各頂点を指定することにより、クリッピング領域を定義します。

  2. ImageOpenPolygon関数を適用ImageOpenPolygon関数を使用して、このポリゴンを画像に描画します。

  3. 作物画像画像学またはその他の作物方法を介して、ポリゴン領域で含有量を抽出します。

このソリューションを実装する手順は次のとおりです。

ステップ1:画像をロードします

まず、PHPのImageCreatefromJpegImageCreatefrommpng 、またはその他の関連機能を使用してロードできる画像をロードする必要があります。

 $image = imagecreatefromjpeg('your_image.jpg');  // 画像ファイルの読み込み

ステップ2:ポリゴンの頂点を定義します

収穫の前に、クロップド領域の形状とサイズを決定するポリゴンの頂点を定義する必要があります。頂点は配列である必要があり、配列の各要素は頂点の座標です。

 $vertices = [
    [100, 100],
    [200, 100],
    [200, 200],
    [100, 200]
];

このコードは長方形の領域を表すために、長方形の4つの頂点( 100,100、200,100、200、200、100,200定義ます。

ステップ3:透明なマスクを作成します

画像OpenPolygon関数を使用して画像コンテンツをトリミングするには、最初に元の画像と同じサイズの透明な画像マスクを作成する必要があります。

 $mask = imagecreatetruecolor(imagesx($image), imagesy($image));
$transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127);  // 透明な背景を作成します
imagefill($mask, 0, 0, $transparent);

ステップ4:多角形の領域を描きます

ImageOpenPolygon関数を使用して、マスクにポリゴンを描画できます。ここでは、ポリゴンの頂点と境界色を指定します。

 $polygonColor = imagecolorallocate($mask, 255, 255, 255);  // 白い境界線
imagefilledpolygon($mask, array_merge(...$vertices), count($vertices), $polygonColor);  // 塗りつぶしポリゴンを描きます

このステップでは、 ImageFilledPolygon関数を使用して白いポリゴンを描き、その内側を埋めます。

ステップ5:マスクを使用して画像をトリミングします

ポリゴンマスクができたので、トリミングのために元の画像に適用できます。マスクを画像に適用して、ポリゴン領域内のコンテンツのみが表示されるようにします。

 imagecopymerge($image, $mask, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

ステップ6:トリミングされた画像を出力します

最後に、トリミングされた画像を出力します。 ImageJPegImagePng 、その他の関数を使用して、画像を出力または保存できます。

 header('Content-Type: image/jpeg');
imagejpeg($image);  // 出力トリミング画像
imagedestroy($image);  // 画像リソースをリリースします
imagedestroy($mask);  // マスクリソースをリリースします

完全なコードの例

<?php
$image = imagecreatefromjpeg('your_image.jpg');  // 画像ファイルの読み込み

// ポリゴンの頂点を定義します
$vertices = [
    [100, 100],
    [200, 100],
    [200, 200],
    [100, 200]
];

// 透明なマスクを作成します
$mask = imagecreatetruecolor(imagesx($image), imagesy($image));
$transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127);
imagefill($mask, 0, 0, $transparent);

// ポリゴンを描きます
$polygonColor = imagecolorallocate($mask, 255, 255, 255);
imagefilledpolygon($mask, array_merge(...$vertices), count($vertices), $polygonColor);

// マスクで画像を収穫します
imagecopymerge($image, $mask, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

// 出力画像
header('Content-Type: image/jpeg');
imagejpeg($image);

imagedestroy($image);
imagedestroy($mask);
?>

要約します

上記の手順を通じて、PHPのImageOpenPolygon関数を使用して、ポリゴン領域の切り抜きを実現できます。この方法は非常に柔軟であり、複雑な切断ニーズを処理するために使用でき、さまざまな形状のエリアカットに適しています。ポリゴンの頂点を合理的に設定することにより、画像の任意の部分を正確に抽出できます。