現在の位置: ホーム> 最新記事一覧> ImageColorAllocate()をumageColorAllocatealpha()と混同します

ImageColorAllocate()をumageColorAllocatealpha()と混同します

M66 2025-05-22

PHPでは、特にGDライブラリを使用して画像を処理する場合は、画像に色を割り当てる必要があることがよくあります。 ImageColorAllocate()およびImageColorallocatealpha()は、2つの一般的に使用される機能で色を割り当てますが、多くの人が初心者であることを疑問に思うでしょう。それらの違いは何ですか?なぜそれらを区別する必要があるのですか?この記事では、詳細に分析します。

1 ??基本的な理解:ImageColorAllocate()とは何ですか?

ImageColorAllocate()は、RGB色を画像に割り当てるために使用されるPHP GDライブラリの関数です。

基本的な使用法は次のとおりです。

 <?php
$img = imagecreatetruecolor(200, 200);
$red = imagecolorallocate($img, 255, 0, 0); // 赤
imagefill($img, 0, 0, $red);
imagepng($img, 'https://m66.net/output.png');
imagedestroy($img);
?>

4つのパラメーターを受け入れます。

  • $ IMG :画像リソース;

  • $赤:赤い成分(0–255);

  • $緑:緑の成分(0–255);

  • $ BLUE :青い成分(0–255)。

このように割り当てられた色は、透明性のない無線色で、完全に不十分なシーンに適しています。

2 ?? ImageColorallocatealpha()とは何ですか?

ImageColorAllocatealpha()は、 ImageColorAllocate()に基づく拡張バージョンであり、透明度(Alphaチャネル)を指定できます。

そのパラメーターは次のとおりです。

  • $ IMG :画像リソース;

  • $赤:赤い成分(0–255);

  • $緑:緑の成分(0–255);

  • $ blue :青い成分(0–255);

  • $ alpha :透明性(0–127)。ここで、0は完全に不透明で、127は完全に透明であることを意味します。

例えば:

 <?php
$img = imagecreatetruecolor(200, 200);
imagesavealpha($img, true); // 保存を有効にします alpha 通路
$transparentRed = imagecolorallocatealpha($img, 255, 0, 0, 63); // 半透明赤
imagefill($img, 0, 0, $transparentRed);
imagepng($img, 'https://m66.net/output_transparent.png');
imagedestroy($img);
?>

ImagesAvealpha()ここに重要であり、それなしで生成されたPNG透明性情報が失われます。

3 ??コアの違いは何ですか?

特徴ImageColorAllocate() ImageColorallocatealpha()
透明性がサポートされているかどうかサポートされておらず、不透明な色のみサポート、4番目のパラメーターは透明性を定義します
使用通常のカラーブロック、行、テキストなどを描きます。透明または半透明の効果を必要とする要素を描画します
透明性値範囲なし0(不透明) - 127(完全な透明)

言い換えれば、画像に通常の色を描画する必要がある場合(完全に不透明)、 ImageColorAllocate()を使用するだけで十分です。また、透明な背景や半透明のオーバーレイ効果を持つPNGを作成するなど、透明な効果を備えたグラフを描きたい場合は、 ImageColorallocatealpha()を使用する必要があります。

4 ??なぜそれらを区別するのですか?

主な理由は次のとおりです。

  • 効率の問題:不透明な色の計算とストレージは、透明性のあるものよりも簡単です。

  • 互換性の問題:一部の出力形式(JPEGなど)はそれ自体で透明性をサポートしていないため、透明な色を使用することは意味がありません。

  • コードの明確さ:透明な効果が必要なときと必要でないときに、コードの維持を容易にすることができます。

ImageColorallocatealpha()を使用するだけで、役に立たない計算を増やすだけでなく、形式の互換性の問題を引き起こす可能性があります。

5 ??実用的なアドバイス

?単純な画像の詰め物のみを行う場合、線を描画し、テキストを追加する場合: imageColorAllocate()を使用します。

? PNGの透明性と半透明の層を備えた透かしを作成する必要がある場合: ImageColorallocatealpha()を使用すると、 ImagesAvealpha()を同時に有効にすることを忘れないでください。