PHP에서 이미지로 작업 할 때는 컬러 맵을 동적으로 수정하는 것이 매우 실용적인 기술입니다. 특히 전체 이미지를 다시 그리지 않고 팔레트 기반 이미지에서 특정 색상을 빠르게 변경하려면 ImageColorset () 및 imageColorResolve () 가 특히 중요 해집니다.
이 기사는 이미지 색상 맵을 동적으로 수정하는 효과와 함께이 두 기능을 사용하는 방법을 알려줍니다.
imageColorset (자원 $ image, int $ index, int $ red, int $ green, int $ blue, int $ alpha = 0) : bool
이 기능은 이미지 팔레트에서 색 인덱스의 색상 값을 직접 수정할 수 있습니다. 즉, 그림의 픽셀 이이 색상 지수를 사용하는 경우 색상도 즉시 변경됩니다.
imageColorResolve (자원 $ image, int $ red, int $ green, int $ blue) : int
이 기능은 이미지 팔레트에서 지정된 RGB 색상에 가장 가까운 인덱스를 찾습니다. 정확히 일치하는 색상을 찾을 수없는 경우 새 인덱스를 할당하려고합니다.
이 두 기능은 함께 사용하여 먼저 수정하려는 색상을 찾은 다음 새 색상을 동적으로 설정할 수 있습니다.
간단한 팔레트 이미지가 있고 원래 파란색을 이미지에서 빨간색으로 변경하려고한다고 가정합니다.
<?php
// 간단한 팔레트 이미지를 만듭니다
$image = imagecreate(100, 100);
// 초기 색상을 정의하십시오
$white = imagecolorallocate($image, 255, 255, 255); // 배경색:하얀색
$blue = imagecolorallocate($image, 0, 0, 255); // 브러시 색상:파란색
// 用파란색画一个矩形
imagefilledrectangle($image, 10, 10, 90, 90, $blue);
// 动态找到파란색的컬러 인덱스
$targetIndex = imagecolorresolve($image, 0, 0, 255);
// 사용 imagecolorset 修改파란색为빨간색色
// 매개 변수입니다:이미지 리소스、컬러 인덱스、빨간색、녹색、파란색、투명도
imagecolorset($image, $targetIndex, 255, 0, 0);
// 브라우저에 이미지를 출력합니다
header('Content-Type: image/png');
imagepng($image);
// 무료 메모리
imagedestroy($image);
?>
이 코드가 실행되면 원래 파란색 사각형이 빨간색으로 바뀌는 것을 볼 수 있습니다.
이 방법은 팔레트 이미지 (즉, imageCreate () 로 만든 GIF 또는 작은 이미지와 같은 팔레트 기반 이미지)에만 적용됩니다.
True Color Images ( imageCreatetRueColor () 에 의해 생성)의 경우 imageColorset ()가 유효하지 않습니다.
이미지에 유사하지만 정확히 같은 색상이없는 경우 imagecolorresolve ()를 사용하여 찾은 색상이 예상 한 것이 아닐 수도 있으므로 때로는 이미지의 팔레트를 미리 표준화해야합니다.
예를 들어, 웹 페이지 기능을 개발하려면 사용자는 버튼을 클릭하여 그림의 색상을 동적으로 변경할 수 있으며 위의 솔루션을 사용하여 간단한 양식을 결합 할 수 있습니다. 예를 들어:
<form method="post" action="https://m66.net/change_color.php">
<input type="submit" name="change" value="색상을 변경하십시오!">
</form>
그런 다음 지금 막 스크립트를 사용하여 이미지를 처리하여 동적 색상 변경의 효과를 달성하십시오.
이미지 색상 Resolve ()를 결합하여 대상 색상 색인을 찾은 다음 imageColorset ()을 사용하여 해당 색상 값을 수정하면 동적 이미지 색상 대체를 실현하는 것이 매우 편리합니다. 이 기술은 게임 맵, 동적 아이콘 사용자 정의 및 기타 시나리오와 같은 고정 색상 영역을 빠르게 변경해야 할 때 특히 사용하기에 적합합니다.
프로젝트에서 많은 동적 이미지를 처리 해야하는 경우 더 강력한 기능을 위해 GD 또는 Imagick 과 같은보다 고급 이미지 처리 라이브러리와 함께 사용하는 것이 좋습니다.