PHPでは、画像処理は非常に実用的で強力な機能です。 ImageOpenPolygon()やImageCopymerge()などのGDライブラリで関数を合理的に使用することにより、複雑な画像合成効果を簡単に実現できます。この記事では、これら2つの機能の使用を段階的に紹介し、簡単な例を通じて実用的なアプリケーションを実証します。
ImageOpenPolygon()は、画像上の開いたポリゴン(つまり、端に接続されていないポリゴン線)を描画するために使用される関数です。基本的な構文は次のとおりです。
bool imageopenpolygon ( GdImage $image , array $points , int $num_points , int $color )
$画像:画像リソース。
$ポイント: [x1、y1、x2、y2、...]などの座標ポイントを含む配列。
$ num_points :ポイント数。
$色:線の色が描画されます。
注: ImagePolygon()とは異なり、 ImageOpenPolygon()は開始点とエンドポイントを自動的に接続しません。
ImageCopyMerge()は、ある画像の一部を別の画像にマージするために使用され、透明性を指定できます。基本的な構文は次のとおりです。
bool imagecopymerge(
GdImage $dst_image,
GdImage $src_image,
int $dst_x, int $dst_y,
int $src_x, int $src_y,
int $src_width, int $src_height,
int $pct
)
$ DST_IMAGE :ターゲット画像リソース。
$ src_image :ソース画像リソース。
$ dst_x、$ dst_y :ソース画像がターゲット画像に配置される開始点の座標。
$ src_x、$ src_y :ソース画像をコピーする開始点。
$ src_width、$ src_height :コピーの幅と高さ。
$ PCT :マージされた透明性(0 =完全に透明、100 =完全に不透明)。
完全な例を次に示します。ImageOpenPolygon ()を使用して簡単なグラフを描画し、 ImageCopyMerge()と背景画像に結合します。
<?php
// 背景画像を作成します
$background = imagecreatetruecolor(400, 300);
$white = imagecolorallocate($background, 255, 255, 255);
imagefill($background, 0, 0, $white);
// フォアグラウンドマップを作成します(多角形のグラフ)
$polygon = imagecreatetruecolor(200, 200);
$transparent = imagecolorallocatealpha($polygon, 0, 0, 0, 127);
imagefill($polygon, 0, 0, $transparent);
imagesavealpha($polygon, true);
// ポリゴンのポイントを定義します
$points = [
50, 50,
150, 50,
150, 150,
50, 150
];
// 色を割り当てます
$red = imagecolorallocate($polygon, 255, 0, 0);
// 開いたポリゴンを描きます
imageopenpolygon($polygon, $points, count($points) / 2, $red);
// 画像を合成します
imagecopymerge($background, $polygon, 100, 50, 0, 0, 200, 200, 70);
// ブラウザに画像を出力します
header('Content-Type: image/png');
imagepng($background);
// 無料のリソース
imagedestroy($background);
imagedestroy($polygon);
?>
この例では、最初に白い背景を持つ画像を作成し、次に透明な背景を持つフォアグラウンドマップを作成し、 ImageopenPolygon()を使用して前景マップに赤い開いた正方形のアウトラインを描画し、最後にこの前景マップをImageCopyMerge()を介して70%の透明性とマージします。
ブラウザに出力する代わりにファイルとして最終結果を保存する場合は、 ImagePng($ background)を置き換えるだけです。と:
imagepng($background, '/path/to/your/folder/merged_image.png');
もちろん、ここ/path/to/your/folder/ pathは、次のような独自のサーバーアドレスに置き換えることができます。
imagepng($background, 'https://m66.net/uploads/merged_image.png');
ImageOpenPolygon()とImageCopymerge()の組み合わせにより、さまざまなオープングラフィックを簡単に描画し、任意の背景画像に柔軟にブレンドして、豊富な視覚効果を実現できます。この技術は、アバター合成、透かしの生産、動的グラフィックスの処理、その他のシナリオで広く使用できます。