imagecolorclosest

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorclosest指定した色に最も近い色のインデックスを取得する

説明

imagecolorclosest(
    GdImage $image,
    int $red,
    int $green,
    int $blue
): int

指定した RGB 値に「近い」 画像パレット中の色のインデックスを返します。

指定した色とパレット上の各色の「距離」は、 RGB 値が三次元空間上の点の座標を表すと考えて計算します。

画像をファイルから作成した場合は、画像内で使われている色だけを解決します。パレットにだけ存在する色は解決されません。

パラメータ

image

imagecreatetruecolor()のような画像作成関数が返す GdImage オブジェクト。

red

赤コンポーネントの値。

green

緑コンポーネントの値。

blue

青コンポーネントの値。

色のパラメータは、0 から 255 までの整数値か 0x00 から 0xFF までの十六進値を指定します。

戻り値

画像パレット内で、指定した色にいちばん近い色のインデックスを返します。

変更履歴

バージョン 説明
8.0.0 image は、 GdImage クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、resource が期待されていました。

例1 画像内での色セットの検索

<?php
// 画像を作成し、パレット画像に変換します
$im imagecreatefrompng('figures/imagecolorclosest.png');
imagetruecolortopalette($imfalse255);

// 探したい色 (RGB)
$colors = array(
    array(
254145154),
    array(
153145188),
    array(
15390145),
    array(
25513792)
);

// それぞれを検索し、パレット内でもっとも近い色を見つけます
// 検索番号、検索した RGB、そして見つかった RGB を返します
foreach($colors as $id => $rgb)
{
    
$result imagecolorclosest($im$rgb[0], $rgb[1], $rgb[2]);
    
$result imagecolorsforindex($im$result);
    
$result "({$result['red']}{$result['green']}{$result['blue']})";

    echo 
"#$id: Search ($rgb[0]$rgb[1]$rgb[2]); Closest match: $result.\n";
}

imagedestroy($im);
?>

上の例の出力は、 たとえば以下のようになります。

#0: Search (254, 145, 154); Closest match: (252, 150, 148).
#1: Search (153, 145, 188); Closest match: (148, 150, 196).
#2: Search (153, 90, 145); Closest match: (148, 90, 156).
#3: Search (255, 137, 92); Closest match: (252, 150, 92).

参考

関連キーワード:  インデックス, 取得, , 画像, 指定, Closest, Search, int, パレット, imagecolorclosest