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로 완전히 투명한 상태임을 알 수 있습니다.