PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

【PHP】imagecolorclosest()関数の使い方:指定色に最も近い色のインデックスを取得する方法

PHPのimagecolorclosest()関数とは

imagecolorclosest()関数は、PHPのGDライブラリに含まれる関数の一つで、指定したRGBカラーに最も近い色のパレットインデックスを取得します。トゥルーカラー画像をパレット形式に変換した後、特定の色に近似する色を探したい場合などに活用できる便利な関数です。

構文

imagecolorclosest($img, $red, $green, $blue)

パラメータ

  • img:imagecreatetruecolor() や imagecreatefrompng() などで作成した画像リソース。

  • red:赤色成分(0〜255の整数値)。

  • green:緑色成分(0〜255の整数値)。

  • blue:青色成分(0〜255の整数値)。

戻り値

画像のパレット内において、指定した色に最も近い色のインデックスを返します。

使用例1

以下は、PNG画像を読み込み、指定した色(20, 90, 140)に最も近い色を取得する例です。

<?php
$img = imagecreatefrompng('https://www.tutorialspoint.com/assets/videos/courses/19/images/course_19_image.png');
imagetruecolortopalette($img, false, 255);
$val = imagecolorclosest($img, 20, 90, 140);
$val = imagecolorsforindex($img, $val);
$val = "({$val['red']}, {$val['green']}, {$val['blue']})";
echo "Closest = " . $val;
imagedestroy($img);
?>

出力結果

Closest = (44, 118, 140)

使用例2

次に、別の画像に対して異なる色成分(10, 130, 80)を指定した例を見てみましょう。

<?php
$img = imagecreatefrompng('https://www.tutorialspoint.com/images/Swift.png');
imagetruecolortopalette($img, false, 255);
$val = imagecolorclosest($img, 10, 130, 80);
$val = imagecolorsforindex($img, $val);
$val = "({$val['red']}, {$val['green']}, {$val['blue']})";
echo "Closest = " . $val;
imagedestroy($img);
?>

出力結果

Closest = (228, 74, 76)

まとめ

imagecolorclosest()関数を使えば、パレット化した画像の中から指定色に最も近い色を簡単に特定できます。基本的な処理の流れは、「画像の読み込み → imagetruecolortopalette()によるパレット変換 → imagecolorclosest()で最近接色のインデックスを取得 → imagecolorsforindex()でRGB値を確認」となります。画像処理における色の置換や分析など、さまざまな場面で役立つ関数ですので、ぜひ活用してみてください。

  1. PHPのimagefilledrectangle()関数の使い方 – 塗りつぶし矩形を描画する方法

    PHPのimagefilledrectangle()関数は、指定した座標をもとに、色で塗りつぶされた矩形(長方形)を画像上に描画するためのGDライブラリ関数です。図形の作成やグラフィック処理などでよく利用されます。構文imagefilledrectangle( $img, $x1, $y1, $x2, $y2, $color )パラメータimgimagecreatetruecolor() などで作成した画像リソースを指定します。x1矩形の1つ目の頂点(始点)のX座標を指定します。y1矩形の1つ目の頂点(始点)のY座標を指定します。x2矩形の2つ目の頂点(対角の終点)のX座標を指定します。y2矩

  2. PHPのimagefilledellipse()関数とは?塗りつぶし楕円の描画方法を解説

    PHPのimagefilledellipse()関数は、指定した座標を中心として塗りつぶしのある楕円を描画するために使用されるGDライブラリの関数です。図形描画や画像生成を行う際に非常に便利な関数の一つです。 構文 imagefilledellipse( $img, $cx, $cy, $width, $height, $color ) パラメータ img:imagecreatetruecolor()関数などで作成した画像リソースを指定します。この画像に対して楕円が描画されます。 cx:楕円の中心のX座標(横方向の位置)を指定します。 cy:楕円の中心のY座標(縦方向の位置)を指定します。