PHPでは、特にGDライブラリを使用して画像を処理する場合は、画像に色を割り当てる必要があることがよくあります。 ImageColorAllocate()およびImageColorallocatealpha()は、2つの一般的に使用される機能で色を割り当てますが、多くの人が初心者であることを疑問に思うでしょう。それらの違いは何ですか?なぜそれらを区別する必要があるのですか?この記事では、詳細に分析します。
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)。
このように割り当てられた色は、透明性のない無線色で、完全に不十分なシーンに適しています。
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透明性情報が失われます。
特徴 | ImageColorAllocate() | ImageColorallocatealpha() |
---|---|---|
透明性がサポートされているかどうか | サポートされておらず、不透明な色のみ | サポート、4番目のパラメーターは透明性を定義します |
使用 | 通常のカラーブロック、行、テキストなどを描きます。 | 透明または半透明の効果を必要とする要素を描画します |
透明性値範囲 | なし | 0(不透明) - 127(完全な透明) |
言い換えれば、画像に通常の色を描画する必要がある場合(完全に不透明)、 ImageColorAllocate()を使用するだけで十分です。また、透明な背景や半透明のオーバーレイ効果を持つPNGを作成するなど、透明な効果を備えたグラフを描きたい場合は、 ImageColorallocatealpha()を使用する必要があります。
主な理由は次のとおりです。
効率の問題:不透明な色の計算とストレージは、透明性のあるものよりも簡単です。
互換性の問題:一部の出力形式(JPEGなど)はそれ自体で透明性をサポートしていないため、透明な色を使用することは意味がありません。
コードの明確さ:透明な効果が必要なときと必要でないときに、コードの維持を容易にすることができます。
ImageColorallocatealpha()を使用するだけで、役に立たない計算を増やすだけでなく、形式の互換性の問題を引き起こす可能性があります。
?単純な画像の詰め物のみを行う場合、線を描画し、テキストを追加する場合: imageColorAllocate()を使用します。
? PNGの透明性と半透明の層を備えた透かしを作成する必要がある場合: ImageColorallocatealpha()を使用すると、 ImagesAvealpha()を同時に有効にすることを忘れないでください。