PHP의 GD 라이브러리를 사용하여 이미지를 처리 할 때 imageColorResolve () 및 imageColorAllocate () 는 자주 발생하는 기능입니다. 그것들은 모두 색상과 관련이 있지만 실제 용도와 효과는 다양합니다. 이들 사이의 차이를 이해하면 개발 프로세스 중에 더 적절한 방법을 선택하고 이미지 처리의 효율성과 품질을 향상시키는 데 도움이됩니다.
ImageColorAllother ()는 이미지에 새 색상을 할당하는 데 사용됩니다. 간단히 말해서 이미지의 팔레트에 색상을 추가하고 색상의 식별자를 반환하는 것입니다.
이미지가 팔레트 기반 (예 : 8 비트 PNG 또는 GIF) 인 경우 새 색상이 할당 될 때마다 팔레트 최대 용량에 도달 할 때까지 (보통 256 색) 내부 팔레트에 레코드가 추가됩니다. 팔레트가 가득 차면 imageColorAllocate ()가 실패하여 False를 반환합니다.
샘플 코드 :
<?php
$image = imagecreate(100, 100); // a 100x100 빈 사진
$red = imagecolorallocate($image, 255, 0, 0); // 빨간색을 할당하십시오
imagefill($image, 0, 0, $red); // 배경을 빨간색으로 채우십시오
imagepng($image, 'https://m66.net/upload/red.png');
imagedestroy($image);
?>
위의 코드에서는 PHP에 팔레트에 할당되어 해당 색상 ID를 반환 할 새로운 빨간색이 필요하다고 명시 적으로 알려줍니다.
imageColorResolve ()는 주어진 RGB 값에 가장 가까운 기존 색상을 찾는 데 사용됩니다. 존재하면 기존 색상 ID를 반환합니다. 가까이 있지 않고 팔레트를위한 공간이 있으면 새 색상이 할당됩니다.
즉, 기존 색상의 사용 우선 순위를 정하고 새로운 색상의 불필요한 추가를 피하여 제한된 팔레트 리소스를보다 효율적으로 사용할 수 있습니다.
샘플 코드 :
<?php
$image = imagecreate(100, 100); // a 100x100 빈 사진
$red = imagecolorresolve($image, 254, 1, 1); // 빨간색에 가까운 색상을 찾으십시오
imagefill($image, 0, 0, $red); // 찾은 색상으로 배경을 채우십시오
imagepng($image, 'https://m66.net/upload/resolved_red.png');
imagedestroy($image);
?>
imageColorResolve () 는 정확한 할당이 아니라 지정된 색상 에 가깝게 필요합니다.
imageColorAllocate () 또는 imageColorResolve ()를 선택하면 필요에 따라 다릅니다.
색상 팔레트 성장을 견딜 수있는 확실하고 정확한 색상이 필요한 경우 imageColorAllocate ()를 선택하십시오.
팔레트 자원을 저장하고 가능한 한 기존 색상을 재사용하려면 imageColorResolve ()를 선택하십시오.
일반적으로 이미지의 색상 수가 너무 크지 않다는 것을 알고 있다면 imageColorAllocate ()를 직접 사용할 수 있습니다. 이미지의 색상이 풍부하거나 GIF와 같은 색상 수에 제한이있는 이미지에서 작업하는 경우 먼저 imageColorResolve ()를 사용하는 것이 좋습니다.
기능적 요점 | imageColorAllother () | imageColorResolve () |
---|---|---|
목적 | 새 색상을 할당하십시오 | 기존의 가까운 색상을 사용하고 필요한 경우 할당하십시오 |
팔레트 압력 | 큰 (오버플로를 유발할 수 있음) | 작은 (가능한 한 재사용 가능) |
시나리오를 사용하십시오 | 정확한 색상 제어 장면 | 색상 자원을 절약하는 장면 |
실제 개발 에서이 두 기능의 차이를 마스터하면 이미지 처리 프로그램이 효율적이고 안정적으로 만들 수 있습니다!