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

PHP imagecolorsforindex() 함수 완벽 정리 – 색상 인덱스로 RGBA 값 추출하기

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);
?>

코드 설명:

  1. imagecreatefrompng()로 PNG 이미지 파일을 읽어 이미지 리소스를 생성합니다.

  2. imagecolorat()로 좌표 (25, 45) 픽셀의 색상 인덱스를 얻습니다.

  3. imagecolorsforindex()에 이미지와 색상 인덱스를 전달해 RGBA 값을 연관 배열로 받습니다.

  4. 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 값을 분리할 수 있습니다.