PHPでは、 ImageColorallocatealpha()関数を使用して、作成された画像に透明性のある色を割り当てます。これは、特にPNG画像またはアルファチャネルをサポートする画像の操作に関しては、透明な画像を処理するために一般的に使用される関数です。
int imagecolorallocatealpha(resource $image, int $red, int $green, int $blue, int $alpha)
$ image :画像リソース、通常、 imageCreate()またはImageCreateFrom*()関数によって作成された画像。
$赤、 $緑、 $青:色の赤、緑、青の部分を指定し、それぞれ0〜255の範囲です。
$ alpha :透明度値、0(完全に不透明)から127(完全に透明)の範囲。透明度効果は、特定の画像タイプ(PNGなど)でのみ表示されます。
透明性のある背景画像を作成し、画像に透明な色の長方形を描画するとします。簡単な例を次に示します。
<?php
// aを作成します 200x200 画像
$image = imagecreatetruecolor(200, 200);
// 画像の透明な背景を設定します
imagesavealpha($image, true);
$transparency = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparency);
// 画像に半透明の赤を設定します
$red = imagecolorallocatealpha($image, 255, 0, 0, 64);
// 半透明の赤い長方形を描きます
imagefilledrectangle($image, 50, 50, 150, 150, $red);
// 出力画像
header('Content-Type: image/png');
imagepng($image);
// 画像リソースを破壊します
imagedestroy($image);
?>
画像リソースの作成: ImageCreateTrueColor()を使用して、200x200の空白の画像を作成します。
アルファチャネル情報を保存: ImagesAvealpha()を使用して、アルファチャネルの保存を可能にします。それ以外の場合、透明性設定は無効になります。
透明な背景を設定します:透明な値は127の透明性値を介して画像に透明な色を割り当てます。つまり、完全に透明です。次に、 ImageFill()を使用して、画像全体の背景を透過として記入します。
半透明の赤を設定します: ImageColorallocatealpha()を使用して、64のアルファ値で半透明の赤を割り当てます(値が小さいほど、透明度が高くなります)。
長方形を描く: ImageFilledRectangle()で半透明の赤で長方形を描きます。
出力画像: ImagePng()を使用して画像を出力し、コンテンツタイプを画像/PNGに設定して、ブラウザが画像を正しく表示できるようにします。
リソースを破壊する: Imagedestroy()を介して画像リソースを破壊し、メモリを解放します。
ImageColorallocatealpha()を使用して透明性を設定する場合、画像はAlphaチャネル(PNGなど)をサポートするタイプのものでなければなりません。 JPEG形式は透明性をサポートしていません。
透明性効果は、ブラウザに表示されたときにブラウザのキャッシュまたはレンダリング設定の影響を受ける可能性があります。
画像サイズ、透明性、色の選択が最終的な画像効果のニーズを満たしていることを確認してください。
ImageColorallocatealpha()を使用して、完全に透明な色を画像に割り当て、画像全体をImageFill()で埋めることができます。例えば:
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);
ImageColorallocatealpha()によって作成された色をテキストに適用できます。例えば:
$white = imagecolorallocatealpha($image, 255, 255, 255, 64);
imagestring($image, 5, 50, 50, 'Hello, World!', $white);
ImageColorallocatealpha()を使用することにより、画像に透明性を設定し、さまざまな程度の透明性を実現できます。これは、透明な効果を必要とする透かし、透明なアイコン、またはその他の画像を作成するのに非常に役立ちます。この関数をマスターすると、画像をより柔軟に操作できます。