PHPのimagecolormatch()関数の使い方を徹底解説
PHPのimagecolormatch()関数は、画像のパレット版(インデックスカラー画像)の色を調整し、トゥルーカラー版(TrueColor画像)の色にできるだけ近づけるための関数です。パレット画像とトゥルーカラー画像の色味を一致させたい場合に活用できます。
構文
bool imagecolormatch ( img1, img2 )
パラメータ
img1:imagecreatetruecolor()関数などで作成したトゥルーカラー画像リソース。
img2:パレット形式の画像リソース。この画像はimg1と同じサイズである必要があります。imagecreate()関数で生成した画像が該当します。
戻り値
imagecolormatch()関数は、処理が成功した場合はTRUE(1)、失敗した場合はFALSE(0)を返します。
使用例1
以下は、PNG画像を読み込み、パレット画像との色をマッチングさせる基本的な例です。
<?php
$img1 = imagecreatefrompng('https://www.tutorialspoint.com/images/Swift.png');
$img2 = imagecreate(imagesx($img1), imagesy($img1));
$color = Array();
$color[] = imagecolorallocate($img2, 110, 40, 180);
$color[] = imagecolorallocate($img2, 90, 10, 90);
$color[] = imagecolorallocate($img2, 66, 170, 110);
$color[] = imagecolorallocate($img2, 130,90, 70);
echo imagecolormatch($img1, $img2);
imagedestroy($img1);
imagedestroy($img2);
?>出力結果
実行すると、マッチング処理が正常に完了したことを示す以下の出力が得られます。
1
使用例2
別の画像を使用した例を見てみましょう。異なる色を割り当てたパレット画像に対しても同様の処理が可能です。
<?php
$img1 = imagecreatefrompng('https://www.tutorialspoint.com/images/tp-logo-diamond.png');
$img2 = imagecreate(imagesx($img1), imagesy($img1));
$color = Array();
$color[] = imagecolorallocate($img2, 10, 1, 20);
$color[] = imagecolorallocate($img2, 40, 30, 10);
$color[] = imagecolorallocate($img2, 15, 100, 50);
$color[] = imagecolorallocate($img2, 70, 20, 30);
echo imagecolormatch($img1, $img2);
imagedestroy($img1);
imagedestroy($img2);
?>出力結果
1
まとめ
imagecolormatch()関数は、GDライブラリで画像処理を行う際に、パレット画像とトゥルーカラー画像の見た目の差を最小限に抑えるのに便利な関数です。両方の画像サイズを揃える点と、使用後はimagedestroy()でメモリを解放する点に注意して利用しましょう。
-
PHPのlog()関数とは?自然対数の計算方法と使い方を解説
定義と使い方log() 関数は、数値の自然対数(natural logarithm)を計算します。対数とは、指数関数の逆演算のことです。たとえば 102=100 という関係は「log10100=2」と表せます。自然対数はオイラー数 e を底として計算され、PHP では定義済み定数 M_E によって e の値(2.7182818284590452354)が提供されています。具体例を挙げると、exp(4.60517018599)=100(つまり e4.60517018599=100)が成り立つため、loge100=4.60517018599 となります。PHP では、この自然対数(loge)を l
-
PHPのlcg_value()関数とは?乱数生成の基本と使い方を解説
lcg_value()関数の定義と使い方lcg_value()関数は、0から1までの範囲でランダムな数値(浮動小数点数)を生成するPHP組み込み関数です。「LCG」とは「線形合同法(Linear Congruential Generator)」の略称です。この手法は、不連続な区分線形方程式を用いて擬似乱数列を計算するアルゴリズムで、擬似乱数生成アルゴリズムの中でも最も古くから知られているものの一つです。構文lcg_value ( void ) : floatパラメータこの関数は引数を受け取りません。戻り値lcg_value()関数は、0.0以上1.0以下の範囲にある擬似乱数のfloat値を返し