PHPでは、 ImageCopyMerge()関数は画像処理の一般的な方法です。パーツまたはすべての画像を別の画像にマージできます。この機能の主な目的は、透かしの作成や統合写真などのシーンで一般的に使用される画像に合わせ、重ね合わせ、作物、その他の操作をマージ、重ね、作物、およびその他の操作です。この記事では、ImageCopymerge()関数の基本的な使用法と、2つの画像をマージするために使用する方法を詳細に紹介します。
ImageCopyMerge()関数のプロトタイプは次のとおりです。
bool imagecopymerge(resource $dst_image, resource $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は完全に不透明です。
この関数の関数は、指定された位置からターゲット画像( $ dst_image)にソース画像($ src_image)をコピーすることです。コピーされた領域は、ソース画像の幅と高さを指定できますが、マージされた透明度は$ PCTで制御されます。
次に、 ImageCopymerge()を使用して2つの画像を実用的な例でマージする方法を示します。
まず、2つの画像をロードする必要があります。 PHPは、 ImageCreatefromJpeg() 、 ImageCreateFrommpng()など、さまざまな形式で画像をロードするための複数の関数を提供します。背景画像と重ね合わせる必要があるロゴ画像があると仮定します。
// ターゲット画像をロードします(背景画像)
$bg_image = imagecreatefromjpeg('background.jpg');
// ソース画像をロードします(logo写真)
$logo_image = imagecreatefrompng('logo.png');
logo.pngをbackground.jpgにマージする必要があり、ロゴを50%に透過的にする必要があるとします。次のコードを使用して実装できます。
// マージの場所を設定します(目标写真像的左上角位置)
$dst_x = 50;
$dst_y = 50;
$src_x = 0;
$src_y = 0;
$src_width = imagesx($logo_image);
$src_height = imagesy($logo_image);
// に透明性を設定します50%
$pct = 50;
// 合并写真像
imagecopymerge($bg_image, $logo_image, $dst_x, $dst_y, $src_x, $src_y, $src_width, $src_height, $pct);
マージ操作が完了したら、結果画像を出力する必要があります。 ImageJpeg() (またはその他の適切な関数、画像形式に応じて)を使用して、マージした画像をファイルとして保存するか、ブラウザに直接表示できます。
// 输出合成后的写真像到浏览器
header('Content-Type: image/jpeg');
imagejpeg($bg_image);
// 無料のリソース
imagedestroy($bg_image);
imagedestroy($logo_image);
または、画像をファイルに保存できます。
// 保存合成后的写真像到文件
imagejpeg($bg_image, 'result.jpg');
透明度設定: ImageCopyMerge()は、透明度の設定( $ PCTパラメーター)をサポートしますが、透明度はPNGおよびGIF形式の画像に対してのみ有効です。 JPEG画像をマージすると、JPEG自体が透明チャネルをサポートしていないため、透明性効果は明らかではありません。
リソースの破壊:画像を処理した後、 Imagedestroy()を使用して画像リソースを解放してメモリの漏れを防ぐことを忘れないでください。
画像サイズ:ソース画像のサイズは、ターゲット画像のサイズに応じて合理的に配置する必要があります。 ImagesX()とImagesy()を使用して、画像の幅と高さを取得して、必要に応じてソース画像の位置とサイズを調整できます。
上記の手順を通じて、 ImageCopyMerge()関数を使用して、画像の合成、オーバーレイ、その他の効果を実現できます。これは、透かし、パズル、その他の操作を作成するのに特に適しています。合理的にマージの位置、透明性、サイズを設定することにより、さまざまな画像合成ニーズを柔軟に処理できます。