現在の位置: ホーム> 最新記事一覧> ImageFill()を使用して、画像の透明な背景を設定します

ImageFill()を使用して、画像の透明な背景を設定します

M66 2025-05-23

画像処理にPHPのGDライブラリを使用する場合、白または黒を入力する代わりにPNG画像を生成するときにバックグラウンドを透過的にするなど、画像の透明な背景を設定する必要がある場合があります。この効果を達成するために、主に2つの関数を使用できます: imagecolorallocatealpha()imagefill()

この記事では、これら2つの機能を使用し、完全なサンプルコードを提供する方法を詳細に説明します。

関数の紹介

ImageColorallocatealpha()

 int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )

この関数は、指定された画像に色を割り当て、透明度を設定するために使用されます。

  • $ red、$ green、$ Blue :RGBカラー値(0-255)

  • $ alpha :透明度値(0は完全に不透明で、127は完全に透明です)

返された値は色識別子であり、 ImageFill()などの関数で使用できます。

ImageFill()

 bool imagefill ( resource $image , int $x , int $y , int $color )

この関数は、指定された色で画像を埋めるために使用されます。

  • $ x、$ y :開始点の座標に記入してください

  • $ COLOR :使用する色識別子

ImageColorallocatealpha()と組み合わせて、キャンバス全体を透明な色で満たすことができます。

実用的な例:透明な背景を持つPNG画像を作成します

以下は、GDライブラリを使用して透明な背景を持つ200x200 PNG画像を生成し、中央に赤い円を描く方法を示す完全なPHPコードです。

 <?php
// aを作成します 200x200 本当の色の画像
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);

// 色混合モードをオフにします,保存を有効にします alpha チャネル情報
imagealphablending($image, false);
imagesavealpha($image, true);

// 完全に透明な色を割り当てます
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);

// キャンバス全体を透明な色で満たします
imagefill($image, 0, 0, $transparent);

// 赤を割り当てます(不透明)
$red = imagecolorallocate($image, 255, 0, 0);

// 真ん中に赤い円を描きます
imagefilledellipse($image, $width / 2, $height / 2, 100, 100, $red);

// 出力画像はです PNG
header('Content-Type: image/png');
imagepng($image);

// 無料のメモリ
imagedestroy($image);
?>

コード解析

1 ??画像リソースを作成<BR> ImageCreatetrueColor()を使用して、真の色のキャンバスを作成します。

2 ??透明な背景を有効にします
GDはデフォルトでアルファ情報を保存せず、次のことが必要です。

 imagealphablending($image, false);
imagesavealpha($image, true);

3 ??透明な色を割り当てて埋めます<br> ImageColorallocatealpha()を使用して、完全に透明な色(Alpha = 127)を作成し、 ImageFill()を使用してキャンバス全体を埋めます。

4 ??コンテンツを描く<br> ここでは、テキスト、行、写真などに変更できます。

5 ??出力画像<BR> Header( 'Content-Type:Image/PNG')を使用して出力タイプを設定し、 ImagePng()を使用してブラウザに出力するか、ファイル名を渡してディスクに保存します。たとえば

imagepng($image, '/path/to/save/output.png');

ヒント

ファイルに保存<br> 画像をサーバーに保存したい場合は、これを行うことができます。

 imagepng($image, 'https://m66.net/images/output.png');

GIFに切り替えます
GIFは透明な背景もサポートしていますが、透明な実装方法は異なります。 ImageColorTransparent()を使用できます。

許可に注意してください<br> サーバーディレクトリに保存するときは、PHPプロセスに書き込みアクセス許可があることを確認してください。