現在の位置: ホーム> 最新記事一覧> 画像色の違いをimageColorresolve()と比較します

画像色の違いをimageColorresolve()と比較します

M66 2025-06-06

PHPで画像を処理する場合、画像内の異なるピクセルの色が似ているかどうかを判断する必要がある場合があります。 ImageColorresolve()ImageColorat()の2つの関数を使用することにより、画像内のピクセルの色情報を取得し、これらの色が類似しているかどうかをさらに比較できます。この記事では、これら2つの機能を組み合わせてこの関数を実装する方法を詳細に紹介します。

準備

まず、既に画像ファイルがあり、そのファイルへのパスが正しいことを確認してください。 PHPは、画像ファイルを処理するためのGDライブラリを提供します。 ImageCreatefromJpeg()ImageCreateFrommpng() 、またはその他の関数を使用して画像をロードできます。

たとえば、 image.jpgという画像ファイルがあるとしたら、次のコードで画像をロードできます。

 <?php
// 画像のロード
$imagePath = "image.jpg";
$image = imagecreatefromjpeg($imagePath);
?>

ImageColorat()は、画像の色を取得します

ImageColorat()関数は、指定された位置でピクセルの色を取得できます。その構文は次のとおりです。

 int imagecolorat ( resource $image , int $x , int $y )

この関数は、カラーインデックス値を返します。カラーインデックス値は、赤、緑、青(RGB)などの色情報を含む整数です。 ImageColorresolve()関数を介してRGB値に変換して、その後の比較を促進できます。

ImageColorresolve()は色を変換します

ImageColorresolve()関数は、色インデックスをRGBカラー値に変換するために使用されます。構文は次のとおりです。

 bool imagecolorresolve ( resource $image , int $color_index , int &$red , int &$green , int &$blue )

カラーインデックスを受け入れ、そのピクセルのRGB値を返します。これらのRGB値を使用して、色が似ているかどうかを判断できます。

色が似ているかどうかを判断します

2つの色が類似しているかどうかを判断するには、それらの違いを計算する必要があります。これは、RGB値の差を計算することで実現できます。たとえば、赤、緑、青のチャネルの違いの合計を計算できます。差異が特定のしきい値よりも少ない場合、2色は類似していると見なされます。

コードを実装します

以下は、ImageColorat()を介してピクセル色を取得し、 ImageColorresolve()を使用してRGB値に変換する方法を示す完全な例コードで、最後に画像内の隣接するピクセルの色が類似しているかどうかを判断します。

 <?php
// 画像のロード
$imagePath = "image.jpg";
$image = imagecreatefromjpeg($imagePath);

// ピクセルの色を取得します
function getColor($image, $x, $y) {
    $colorIndex = imagecolorat($image, $x, $y);
    imagecolorresolve($image, $colorIndex, $red, $green, $blue);
    return ['red' => $red, 'green' => $green, 'blue' => $blue];
}

// 2つの色が似ているかどうかを判断します
function isColorSimilar($color1, $color2, $threshold = 50) {
    $redDiff = abs($color1['red'] - $color2['red']);
    $greenDiff = abs($color1['green'] - $color2['green']);
    $blueDiff = abs($color1['blue'] - $color2['blue']);
    
    // 赤、緑、青の3つのカラーチャネルの違いがしきい値よりも小さい場合,色が似ていると見なされます
    return ($redDiff < $threshold && $greenDiff < $threshold && $blueDiff < $threshold);
}

// 2ピクセルの色を取得します
$color1 = getColor($image, 10, 10); // 座標 (10, 10)
$color2 = getColor($image, 11, 10); // 座標 (11, 10)

// 色が似ているかどうかを判断します
if (isColorSimilar($color1, $color2)) {
    echo "これら2つのピクセルの色は似ています。\n";
} else {
    echo "これら2つのピクセルの色は似ていません。\n";
}

// 画像リソースをリリースします
imagedestroy($image);
?>

コード説明

  1. 画像の読み込みImageCreatefromJpeg()を使用して画像ファイルをロードします。

  2. 色を取得ImageColorat()を介して指定された座標で色インデックスを取得し、 ImageColorresolve()を使用してRGB値に変換します。

  3. 色の類似性を決定する:2つの色のRGBの違いを計算することにより、それらが類似しているかどうかを判断します。

  4. 出力結果:判断結果によると、対応するプロンプト情報は出力です。

注意すべきこと

  • このコードのしきい値(デフォルト50)は、色が似ているかどうかを判断するために使用される標準です。あなたはあなたのニーズに応じてこの値を調整することができます。しきい値が小さいほど、色の要件が近づきます。

  • 使用されている画像パスが正しく、画像形式がサポートされていることを確認してください(JPEG、PNGなど)。

要約します

ImageColorat()ImageColorresolve()を組み合わせることにより、画像内のピクセルの色情報を簡単に取得し、それらが類似しているかどうかを判断できます。これは、画像処理、色分析などのシナリオで非常に便利です。これら2つの機能の使用方法をマスターする限り、画像のカラーデータを柔軟に処理できます。