現在の位置: ホーム> 最新記事一覧> PHPのImageOpenPolygon()関数を使用して、描かれたポリゴンフィギュアに影効果を追加する方法は?

PHPのImageOpenPolygon()関数を使用して、描かれたポリゴンフィギュアに影効果を追加する方法は?

M66 2025-06-23

画像処理では、ポリゴナルグラフィックスにシャドウイング効果を追加することは一般的な要件です。 PHPは、ImageOpenPolygon()関数がポリゴンを描画するために使用されるグラフィック処理関数の強力なライブラリを提供します。いくつかの簡単なトリックを使用すると、これらの多角形の数字に影の効果を追加して、図の3次元性を高めることができます。

ImageOpenPolygon()関数とは何ですか?

PHPでは、 ImageOpenPolygon()関数を使用してポリゴンを作成します。この関数を使用すると、ポリゴンの頂点を定義し、画像リソースに描画できます。その基本的な構文は次のとおりです。

 imageopenpolygon($image, $points, $num_points, $color);
  • $画像:画像リソース。

  • $ポイント:ポリゴンのすべての頂点座標を含む配列。

  • $ num_points :ポリゴンの頂点の数。

  • $色:ポリゴンの色。

この関数を使用すると、さまざまな形状のポリゴンを描画でき、これらのポリゴンにシャドウ効果を追加するには、追加の処理が必要です。

シャドウエフェクトを追加する手順

  1. 画像リソースの作成:まず、画像リソースを作成する必要があります。

  2. 描画ポリゴンImageOpenPolygon()を使用してポリゴンを描きます。

  3. シャドウを描く:影をわずかにオフセットし、暗い色で満たして、光源の反射のように見せます。

  4. マージレイヤー:視覚効果のためにシャドウとポリゴナルグラフィックスをマージします。

このプロセスを実装するコード例は次のとおりです。

 <?php
// 画像リソースを作成します
$image = imagecreatetruecolor(400, 400);

// 色を割り当てます
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
$shadowColor = imagecolorallocate($image, 100, 100, 100); // 影の色

// 背景の色を埋めます
imagefill($image, 0, 0, $white);

// ポリゴンの頂点を定義します
$points = [
    100, 100, // 頂点1
    200, 50,  // 頂点2
    300, 150, // 頂点3
    250, 250, // 頂点4
    150, 200  // 頂点5
];

// 影を描きます(小さな距離で相殺されます)
$shadowOffsetX = 10;
$shadowOffsetY = 10;
$shadowPoints = [];
foreach ($points as $key => $value) {
    if ($key % 2 == 0) {
        $shadowPoints[] = $value + $shadowOffsetX; // x コーディネートオフセット
    } else {
        $shadowPoints[] = $value + $shadowOffsetY; // y コーディネートオフセット
    }
}

// 影を描きます
imageopenpolygon($image, $shadowPoints, count($shadowPoints) / 2, $shadowColor);

// ポリゴンを描きます
imageopenpolygon($image, $points, count($points) / 2, $black);

// ブラウザに画像を出力します
header("Content-Type: image/png");
imagepng($image);

// 画像リソースを破壊します
imagedestroy($image);
?>

コード解析

  1. 画像リソースの作成ImageCreateTrueColor()と割り当てられた色(白、黒、影の色)を使用して400x400の画像リソースを作成しました。

  2. ポリゴンの頂点の定義$ポイントアレイに保存された頂点座標を使用して、5ポイントポリゴンを定義します。

  3. 影を描く:ポリゴンの各頂点座標をわずかに相殺することにより、影の頂点座標を取得します。シャドウオフセットは、 $ ShadowOffsetx$ ShadowOffsetyで制御されます。

  4. ポリゴンを描くImageOpenPolygon()関数を介して影とポリゴンを個別に描画すると、影が少しシフトしてそれらを立体視に見せます。

  5. 出力画像:最後に、 ImagePng()関数を介して生成された画像をブラウザに出力します。