PHP에서는 이미지를 처리 할 때 색상 관리가 중요한 부분입니다. 일반적으로 imageColorAllocate ()를 사용하여 새 색상을 할당하거나 imageColorResolve ()를 사용하여 정의 된 색상을 찾습니다. 이미지에서 특정 영역의 색상을 채워야 하고이 색상이 미리 정의되지 않은 경우이 두 기능을 결합하여 정의되지 않은 색상을 자동으로 채울 수 있습니다.
이 기사에서는 ImageColorResolve () 및 imageColorAllocate () 로이를 달성하는 방법을 보여주고 각 픽셀에 색상을 올바르게 할당 할 수 있는지 확인합니다.
imageColorResolve () :이 함수는 현재 이미지에서 지정된 색상의 색 인덱스를 반환합니다. 이미지에 색상이 존재하지 않으면 -1을 반환합니다.
ImageColorAllocate () :이 함수는 이미지에 색상을 할당하고 해당 색상의 색상을 반환합니다. 색상이 이미 존재하면 해당 인덱스를 반환하면 새 색상이 할당됩니다.
우리가 이미지를 만들고 있고 정의되지 않은 몇 가지 색상이 있다고 가정합니다. 이러한 색상을 매번 반복적으로 정의하지 않기 위해 imageColorResolve () 가 이미 존재하는지 여부를 확인할 수 있습니다. 색상이 이미 존재하는 경우 imageColorResolve ()를 사용하여 인덱스를 얻습니다. 색상이 존재하지 않으면 imageColorAllocate ()를 사용하여 새 색상을 할당합니다.
<?php
// 빈 이미지를 만듭니다
$image = imagecreatetruecolor(200, 200);
// 색상 설정
$backgroundColor = imagecolorallocate($image, 255, 255, 255); // 흰색 배경
imagefill($image, 0, 0, $backgroundColor);
// 색상을 채우십시오
$colorToFill = [100, 150, 200]; // RGB값
$colorIndex = imagecolorresolve($image, $colorToFill[0], $colorToFill[1], $colorToFill[2]);
// 색상이 정의되지 않은 경우,사용 imagecolorallocate 이 색상을 만듭니다
if ($colorIndex == -1) {
$colorIndex = imagecolorallocate($image, $colorToFill[0], $colorToFill[1], $colorToFill[2]);
}
// 채워진 색상으로 사각형을 그립니다
imagefilledrectangle($image, 50, 50, 150, 150, $colorIndex);
// 출력 이미지
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
이미지 생성 : 먼저 ImageCreatetRueColor ()를 사용하여 200x200의 빈 이미지를 만듭니다.
배경색 할당 : imageColorAllocate ()를 사용하여 흰색 배경색을 만들고 이미지 fill () 로 전체 이미지를 채 웁니다.
색상 채우기 : RGB 값 [100, 150, 200] 을 정의하고 imageColorResolve ()를 사용하여 색상이 이미 존재하는지 확인합니다. 색상이 존재하지 않으면 imageColorResolve ()는 -1을 반환합니다. 현재 imagecolorallocate ()를 사용 하여이 새로운 색상을 할당합니다.
그래프 그리기 : ImageFilledRectangle () 함수를 사용하여 이미지에 채워진 사각형을 그립니다. 채우기 색상은 방금 결정한 색 인덱스입니다.
출력 이미지 : 마지막으로 ImagePng ()를 사용하여 이미지를 출력하고 이미지 가시기 () 을 통해 이미지 리소스를 파괴하여 메모리를 확보합니다.
imageColorResolve () 및 imageColorAllocate () 는 GD 라이브러리를 사용할 때만 유효합니다. PHP 환경에 GD 라이브러리가 활성화되지 않은 경우 확장을 설치하고 활성화했는지 확인하십시오.
imageColorResolve () 가 색상을 찾는 방식은 이미지의 색상 구성에 의해 제한 될 수 있습니다. 이미지가 팔레트 모드 (예 : .gif )에서 생성되면 색상 검색 및 할당이 실제 색상 모드와 다를 수 있습니다.
ImageColorResolve () 와 ImageColorAllocate ()를 결합하면 이미지에서 색상 할당을 효율적으로 관리하여 시스템을 채우려면 정의되지 않은 색상을 자동으로 인식하고 채울 수 있습니다. 이는 코드의 유지 관리 가능성을 향상시킬뿐만 아니라 불필요한 정의 복제를 피하고 성능을 향상시킵니다.