PHPは、動的に生成された画像を使用するときにピクセル、色、透明度を操作するための豊富なGDライブラリ機能を提供します。その中で、 ImageColorallocatealpha()関数は、画像に透明性のある色を割り当てるために使用できる非常に便利なツールです。これは、半透明の透かしをオーバーレイしたり、シャドウエフェクトを作成したり、透明な領域で画像を生成する必要があるために特に重要です。
この記事では、ImageColorallocatealpha()を使用し、サンプルコードを組み合わせて、画像内の要素の透明度を動的に調整する方法を示す方法を示します。
ImageColorallocatealpha()の定義は次のとおりです。
int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )
$画像: ImageCreateTrueColor()によって作成された画像リソースハンドル。
$ red 、 $ green 、 $ blue :色のRGBコンポーネント、範囲0〜255。
$ alpha :透明性、範囲0(完全に不透明)から127(完全に透明)。
注:PHPのアルファ値と通常の透明性の定義は逆で、値が大きいほど、透明性が高くなります。
ImageColorallocatealpha()を使用して、動的画像で調整可能な透明性を備えた円を描く方法を示す簡単な例を示します。
<?php
// コンテンツヘッダーを設定します,ブラウザ出力 PNG 写真
header('Content-Type: image/png');
// aを作成します 200x200 真の色のキャンバス
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);
// 有効にする alpha チャネル保存
imagesavealpha($image, true);
// aを作成します完全透明的背景
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);
// 動的に透明性を設定します(ここで使用します GET パラメーター制御)
$alpha = isset($_GET['alpha']) ? intval($_GET['alpha']) : 50;
if ($alpha < 0) $alpha = 0;
if ($alpha > 127) $alpha = 127;
// 透明性のある赤を割り当てます
$redAlpha = imagecolorallocatealpha($image, 255, 0, 0, $alpha);
// キャンバスの中央に円を描きます
imagefilledellipse($image, $width / 2, $height / 2, 150, 150, $redAlpha);
// 出力画像
imagepng($image);
// 画像リソースを破壊します
imagedestroy($image);
?>
アクセス例:
https://m66.net/transparent_circle.php?alpha=30
アルファパラメーター(0〜127)を調整することにより、ブラウザの透明度の変化を動的に確認できます。
Alphaチャネルを有効にします<br> ImagesAvealpha($ image、true)を使用することが必要です。そうしないと、透明な領域が黒で満たされる場合があります。
透明な色で満たされた背景<br> 画像の透明な部分がデフォルトの背景によって上書きされないようにするために、まず背景を完全に透明な色で埋めます。
透明性の方向<BR> CSSとは異なり、GDの透明度値が大きいほど、透明性が高くなります。たとえば、 0は完全に不透明ですが、 127は完全に透明です。
動的な透かしのために半透明のオーバーレイを生成します。
シャドウまたはハロー効果を備えたテキストを作成します。
Webページまたはアプリケーション用に透明なPNGを生成します。
ImageColorallocatealpha()と他のGD関数( ImageString()やImagettftext()など)を組み合わせることにより、複雑な動的画像効果を構築して、Webサイトの視覚表現を改善できます。