현재 위치: > 최신 기사 목록> 이미지 색상의 차이를 ImageColorResolve ()와 비교하십시오.

이미지 색상의 차이를 ImageColorResolve ()와 비교하십시오.

M66 2025-06-06

PHP에서 이미지를 처리 ​​할 때 때로는 이미지의 다른 픽셀의 색상이 비슷한 지 판단해야합니다. ImageColorResolve ()imageColorat () 의 두 기능을 사용하면 이미지에서 픽셀의 색상 정보를 얻고 이러한 색상이 비슷한 지 비교할 수 있습니다. 이 기사는이 두 기능을 결합 하여이 기능을 구현하는 방법을 자세히 소개합니다.

준비

먼저 이미 이미지 파일이 있고 해당 파일의 경로가 올바른지 확인하십시오. 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 값을 사용하여 색상이 비슷한 지 확인할 수 있습니다.

색상이 비슷한 지 확인하십시오

두 가지 색상이 비슷한 지 확인하려면 차이를 계산해야합니다. 이것은 RGB 값의 차이를 계산하여 달성 할 수 있습니다. 예를 들어, 빨간색, 녹색 및 파란색 채널의 차이의 합을 계산할 수 있으며, 차이가 특정 임계 값보다 작 으면 두 색상이 비슷한 것으로 간주됩니다.

코드를 구현하십시오

다음은 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];
}

// 두 색상이 비슷한 지 확인하십시오
function isColorSimilar($color1, $color2, $threshold = 50) {
    $redDiff = abs($color1['red'] - $color2['red']);
    $greenDiff = abs($color1['green'] - $color2['green']);
    $blueDiff = abs($color1['blue'] - $color2['blue']);
    
    // 빨간색, 녹색 및 파란색의 세 컬러 채널의 차이가 임계 값보다 작 으면,색상이 비슷한 것으로 간주됩니다
    return ($redDiff < $threshold && $greenDiff < $threshold && $blueDiff < $threshold);
}

// 두 픽셀의 색상을 얻으십시오
$color1 = getColor($image, 10, 10); // 동등 어구 (10, 10)
$color2 = getColor($image, 11, 10); // 동등 어구 (11, 10)

// 색상이 비슷한 지 확인하십시오
if (isColorSimilar($color1, $color2)) {
    echo "이 두 픽셀의 색상은 비슷합니다。\n";
} else {
    echo "이 두 픽셀의 색상은 비슷하지 않습니다。\n";
}

// 이미지 리소스 릴리스
imagedestroy($image);
?>

코드 설명

  1. 이미지로드 : 이미지 파일을로드하려면 imageCreateFromjPeg ()를 사용하십시오.

  2. GET COLOR : ImageColorat ()을 통해 지정된 좌표에서 색 인덱스를 가져온 다음 imageColorResolve ()를 사용하여 RGB 값으로 변환하십시오.

  3. 색상 유사성 결정 : 두 색상 사이의 RGB 차이를 계산하여 비슷한 지 여부를 결정하십시오.

  4. 출력 결과 : 판단 결과에 따라 해당 프롬프트 정보가 출력됩니다.

주목해야 할 것

  • 이 코드 (기본 50)의 임계 값은 색상이 유사한 지 여부를 결정하는 데 사용되는 표준입니다. 필요에 따라이 값을 조정할 수 있습니다. 임계 값이 작을수록 색상 요구 사항이 가까워집니다.

  • 사용 된 이미지 경로가 정확하고 이미지 형식이 지원되는지 확인하십시오 (예 : JPEG, PNG 등).

요약

imageColorat ()imageColorResolve () 를 결합하면 이미지에서 픽셀의 색상 정보를 쉽게 얻고 비슷한 지 여부를 결정할 수 있습니다. 이것은 이미지 처리, 색상 분석 등과 같은 시나리오에서 매우 유용합니다.이 두 기능의 사용 방법을 마스터하는 한 이미지의 색상 데이터를 유연하게 처리 할 수 ​​있습니다.