PHP의 imagecolorsforindex() 함수란?
imagecolorsforindex() 함수는 PHP GD 라이브러리에서 제공하는 함수로, 이미지 내 특정 색상 인덱스(color index)에 해당하는 색상 정보를 조회할 때 사용합니다. 이 함수를 활용하면 이미지의 특정 좌표 픽셀이 어떤 빨강(Red), 초록(Green), 파랑(Blue), 알파(Alpha) 값으로 구성되어 있는지 손쉽게 확인할 수 있습니다.
특히 imagecolorat() 함수와 함께 사용하면, 원하는 좌표의 픽셀 색상 값을 분석하는 코드를 간단하게 작성할 수 있습니다.
문법(Syntax)
imagecolorsforindex(img, index)
매개변수(Parameters)
img:
imagecreatetruecolor(),imagecreatefrompng()등으로 생성한 이미지 리소스입니다.index: 조회하고자 하는 색상 인덱스 값입니다. 보통
imagecolorat()함수가 반환한 값을 전달합니다.
반환값(Return Value)
imagecolorsforindex() 함수는 지정된 색상 인덱스에 대응하는 값을 담고 있는 연관 배열(associative array)을 반환합니다. 반환되는 배열은 다음 네 개의 키를 가집니다.
red: 빨강 채널 값 (0~255)
green: 초록 채널 값 (0~255)
blue: 파랑 채널 값 (0~255)
alpha: 투명도 값 (0 = 완전 불투명, 127 = 완전 투명)
사용 예제(Example)
다음 예제는 PNG 이미지를 불러온 뒤, 좌표 (25, 45)에 위치한 픽셀의 색상 정보를 추출하여 출력하는 코드입니다.
<?php
$img = imagecreatefrompng('https://www.tutorialspoint.com/images/tp-logo-diamond.png');
$x = 25;
$y = 45;
$rgb = imagecolorat($img, $x, $y);
$colors = imagecolorsforindex($img, $rgb);
var_dump($colors);
?>
코드 설명:
imagecreatefrompng()로 PNG 이미지 파일을 읽어 이미지 리소스를 생성합니다.imagecolorat()로 좌표 (25, 45) 픽셀의 색상 인덱스를 얻습니다.imagecolorsforindex()에 이미지와 색상 인덱스를 전달해 RGBA 값을 연관 배열로 받습니다.var_dump()로 결과 배열을 화면에 출력합니다.
출력 결과(Output)
위 예제를 실행하면 아래와 같은 결과가 출력됩니다.
array(4) { ["red"]=> int(255) ["green"]=> int(255) ["blue"]=> int(255) ["alpha"]=> int(127) }
이 결과는 해당 픽셀이 순백색(RGB 255, 255, 255)이면서 완전히 투명(alpha 127)한 상태임을 의미합니다.
참고 사항
유효하지 않은 색상 인덱스를 전달하면 false가 반환될 수 있으므로, 실무에서는 반환값 검증을 함께 처리하는 것이 좋습니다.
트루컬러(truecolor) 이미지에서는
imagecolorat()이 인덱스 대신 RGB 정수값을 직접 반환하므로, 이 경우imagecolorsforindex()없이 비트 연산으로 R, G, B 값을 분리할 수 있습니다.