현재 위치: > 최신 기사 목록> imageColorResolve () 및 ImagesEtpixel ()와 함께 이미지 색상을 수정하는 방법

imageColorResolve () 및 ImagesEtpixel ()와 함께 이미지 색상을 수정하는 방법

M66 2025-05-30

PHP에서 이미지를 처리 ​​할 때, 때로는 특정 영역 수정, 배경 교체 또는 단순히 이미지 라벨링과 같은 이미지의 특정 픽셀을 다시 색상해야합니다. 이 시나리오에서 imageColorResolve ()ImagesEtpixel () 은 매우 실용적인 쌍입니다.

imageColorResolve () 이해

imageColorResolve () 함수의 기능은 기존 이미지 리소스에서 지정된 색상 (RGB)에 가장 가까운 기존 색상 색인을 찾는 것입니다. 찾을 수 없다면 새 색상을 할당하려고합니다. 일부 이미지는 제한된 수의 색상 (특히 팔레트 이미지)을 가지고 있기 때문에 imageecolorallocate () 만 사용하는 것보다 유연합니다.

기능 프로토 타입은 다음과 같습니다.

 int imagecolorresolve ( GdImage $image , int $red , int $green , int $blue )
  • $ 이미지 : 이미지 리소스

  • $ red , $ green , $ blue : 찾거나 만들기위한 컬러 성분

ImagesEtpixel 이해 ()

ImagesEtpixel ()은 단일 픽셀 기능 프로토 타입의 색상을 설정하는 데 사용됩니다.

 bool imagesetpixel ( GdImage $image , int $x , int $y , int $color )
  • $ 이미지 : 이미지 리소스

  • $ x , $ y : 설정할 픽셀 좌표

  • $ color : 색인 지수 ( imageColorAllocate () , imageColorResolve () 등과 같은 함수에 의해 반환됨)

실용적인 응용 프로그램 예

이미지가 있다고 가정하고 이미지 (예 : (50,50) ~ (150,150) 정사각형 영역)에서 밝은 파란색으로 특정 영역을 다시 검색하려고합니다.

우리는 이것을 할 수 있습니다 :

 <?php
// 사진로드
$imagePath = 'https://m66.net/uploads/sample.png';
$image = imagecreatefrompng($imagePath);

if (!$image) {
    die('无法사진로드');
}

// 대상 색상:밝은 파란색 (R:173, G:216, B:230)
$newColor = imagecolorresolve($image, 173, 216, 230);

// 루프 교체 (50,50) 도착하다 (150,150) 이 지역의 픽셀
for ($x = 50; $x <= 150; $x++) {
    for ($y = 50; $y <= 150; $y++) {
        imagesetpixel($image, $x, $y, $newColor);
    }
}

// 输出结果도착하다浏览器
header('Content-Type: image/png');
imagepng($image);

// 무료 메모리
imagedestroy($image);
?>

주목해야 할 것

  • 이미지 권한 : 이미지에 액세스 할 수 있고 올바른 경로가 있는지 확인하십시오 (이 예제는 https://m66.net/uploads/sample.png를 사용합니다).

  • 색상 수량 제한 : 팔레트 이미지의 경우 PHP의 GD 라이브러리는 최대 256 개의 색상 만 사용할 수 있습니다. ImageColorResolve ()를 초과하면 이미 사용 가능한 가장 가까운 색상을 반환 할 수 있습니다.

  • 성능 문제 : 대규모에서 ImagesEtpixel ()을 사용하면 느리게 진행됩니다. 대규모 지역 픽셀을 효율적으로 처리 해야하는 경우 ImageFilledRectangle () 또는 ImageEcopy ( )와 같은 직접 조작하는 것을 고려해야합니다.

  • 형식 지원 :이 예제는 PNG를 사용합니다. 물론 imageCreatefromjpeg () , imageCreateFromGif () 및 기타 함수를 사용하여 다른 형식을 처리 할 수도 있습니다.

요약

imageEcolorResolve ()를 사용하면 색상 일치 및 할당 문제를 유연하게 처리 할 수 ​​있으며 ImagesEtpixel ()은 개별 픽셀 레벨을 잘 제어 할 수 있습니다. 이 조합은 이미지 복구, 로컬 수정 및 동적 이미지 생성과 같은 장면에 매우 적합합니다.