PHPで画像処理を実行するとき、 ImageColorallocatealpha()は非常に重要な機能です。色を割り当てるだけでなく、透明性も制御します。ただし、多くの開発者は、多くの場合、適切なもののために、それを使用するときに異常な画像の透明性の問題に遭遇します。
この記事では、この問題を詳細に分析して、ImageColorallocatealpha()関数を正しく使用するのに役立ちます。
ImageColorallocatealpha()は、GDライブラリベースの画像に透明性のある色を割り当てるために使用されます。
その基本的な構文は次のとおりです。
int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )
パラメーター説明:
$画像: ImageCreate()またはImageCreatetrueColor()によって作成された画像リソース。
$ red 、 $ green 、 $ Blue :RGBカラーコンポーネント、範囲0〜255。
$ alpha :透明度値、範囲0〜127 。
注:アルファは0〜255ではなく、 0(完全に不透明)から127(完全に透明)です。
多くの開発者が犯す最初の間違いは、Alphaの価値はRGBのように0〜255であると考えていますが、255を直接詰め込みます。
例を見てみましょう:
<?php
$img = imagecreatetruecolor(200, 200);
$color = imagecolorallocatealpha($img, 255, 0, 0, 255); // 間違い
ここに設定されたアルファセットは255ですが、GDライブラリは最大127しか受け入れません。範囲外であるため、GDはそれを127として扱い、完全に透明性をもたらします。
正しい書き込み:
<?php
$img = imagecreatetruecolor(200, 200);
$color = imagecolorallocatealpha($img, 255, 0, 0, 0); // 不透明な赤
$semi_transparent = imagecolorallocatealpha($img, 255, 0, 0, 64); // 半透明の赤
GDライブラリはこの方法でアルファ値を理解しているためです。
0:完全に不透明
127:完全に透明
255に記入すると、GDはMIN($ ALPHA、127)を使用します。つまり、最大の透明度と見なされます。これは次のとおりです。
私はもともと赤を描きたかったのですが、見ることができませんでした。
私はもともと半透明を描きたいと思っていましたが、それは完全に透明であることが判明しました。
?覚えておいてください:アルファ範囲は0〜127で、0〜255ではありません。
0〜255の範囲(CSSやRGBA共通値など)で透明性デザインを使用する場合、変換を行う必要があります。
$css_alpha = 128; // 仮定します 0–255 急行
$gd_alpha = intval(127 * (255 - $css_alpha) / 255); // に変換します GD 使用済み値
これにより、PHPに一貫した透明性が確保されます。
これらを完全な例と一緒にひもでつなぎましょう。