Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP imagecolorat() 함수 – 특정 픽셀의 색상 인덱스 가져오기

PHP의 imagecolorat() 함수는 이미지에서 지정한 좌표(x, y)에 위치한 픽셀의 색상 인덱스를 반환하는 함수입니다. 이 함수를 사용하면 이미지의 특정 지점이 어떤 색으로 이루어져 있는지 확인할 수 있으며, 이미지 분석이나 색상 기반 처리 작업에 유용하게 활용됩니다.

문법

imagecolorat( $img, $x, $y )

매개변수

  • img: 색상을 확인할 대상 이미지 리소스입니다. 주로 imagecreatetruecolor()imagecreatefrompng() 같은 함수로 생성한 이미지를 사용합니다.

  • x: 색상을 확인할 지점의 x좌표입니다. 이미지의 왼쪽 상단 모서리가 원점(0, 0)이 됩니다.

  • y: 색상을 확인할 지점의 y좌표입니다.

반환값

imagecolorat() 함수는 성공 시 해당 픽셀의 색상 인덱스를 정수 형태로 반환하며, 실패하면 FALSE를 반환합니다.

참고로 트루컬러 이미지의 경우 반환되는 값은 빨강(Red), 초록(Green), 파랑(Blue) 각 채널의 값을 비트 연산으로 조합한 정수입니다. 이때 다음과 같이 비트 시프트와 비트 AND 연산을 통해 개별 RGB 값을 추출할 수 있습니다.

$r = ($rgb >> 16) & 0xFF; // Red 값
$g = ($rgb >> 8) & 0xFF; // Green 값
$b = $rgb & 0xFF; // Blue 값

예제

다음은 PNG 이미지에서 특정 좌표(15, 25)의 픽셀 색상 정보를 가져오는 예제입니다. imagecolorsforindex() 함수를 함께 사용하면 색상 인덱스를 사람이 읽기 쉬운 RGBA 배열 형태로 변환할 수 있습니다.

<?php
    $img = imagecreatefrompng("https://www.tutorialspoint.com/images/tp-logo-diamond.png");
    $rgb = imagecolorat($img, 15, 25);
    $colors = imagecolorsforindex($img, $rgb);
    var_dump($colors);
?>

실행 결과

위 예제를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.

array(4) { ["red"]=> int(255) ["green"]=> int(255) ["blue"]=> int(255) ["alpha"]=> int(127) }

출력 결과를 보면 해당 픽셀은 red 255, green 255, blue 255로 흰색 계열의 색상이며, alpha 값이 127로 완전히 투명한 상태임을 알 수 있습니다.