이미지 처리에 PHP를 사용할 때는 ImageColoralLocatealpha () 함수를 사용하여 투명성으로 색상을 설정할 수 있습니다. 이 기능을 통해 이미지에 색상을 할당하고 투명성을 지정할 수 있습니다. 이 투명성은 종종 PNG 또는 GIF 이미지를 생성 할 때 반투명 또는 완전히 투명한 영역을 만드는 데 사용됩니다.
그러나 때때로 우리는 ImageColorallocatealpha () 함수가 사용되고 투명성이 설정되어 있지만 생성 된 이미지는 예상되는 투명성 효과를 나타내지 않는다는 것을 알게됩니다. 왜 이런 일이 일어나고 있습니까? 이 기사에서는이 문제를 일으킬 수있는 이유를 살펴보고 솔루션을 제공 할 것입니다.
imagecolorallocatealpha () 함수의 기능은 이미지에 색상을 할당하고 색상의 투명성을 지정하는 것입니다. 투명성은 알파 채널을 설정하여 제어되며, 알파 값은 0 (완전 불투명)에서 127 (완전히 투명) 범위입니다. 이 함수의 구문은 다음과 같습니다.
imagecolorallocatealpha(resource $image, int $red, int $green, int $blue, int $alpha): int
$ 이미지 : 이미지 리소스.
$ RED , $ GREEN , $ BLUE : 색상의 빨간색, 녹색 및 파란색 구성 요소, 값은 0에서 255입니다.
$ ALPHA : 0 (완전히 불투명)에서 127 (완전히 투명) 범위의 투명성 값.
샘플 코드 :
<?php
// 빈 이미지를 만듭니다
$image = imagecreatetruecolor(400, 300);
// 이미지에 투명한 색상을 할당하십시오
$transparent_color = imagecolorallocatealpha($image, 255, 0, 0, 50);
// 전체 이미지 배경을 빨간색으로 채 웁니다,와 함께50%투명도
imagefill($image, 0, 0, $transparent_color);
// 이미지 출력 유형을 설정하십시오 PNG,투명한 배경을 지원합니다
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
위의 코드에서는 imagecolorallocatealpha ()를 사용하여 이미지의 투명성이있는 빨간색을 만들고 전체 이미지 배경을 ImageFill () 로 채 웁니다.
코드에서 투명한 색상을 명시 적으로 설정하지만 투명성은 때때로 예상대로 표시되지 않습니다. 투명성 효과가 이미지에 자동으로 나타나지 않기 때문입니다. 가능한 이유는 다음과 같습니다.
이미지의 투명한 색상을 설정하면 이미지의 배경이 투명성을 지원해야합니다. 이미지 자체가 투명성 (예 : JPEG)을 지원하지 않는 형식 인 경우 투명성이 올바르게 표시되지 않습니다. PNG 형식은 투명성을 지원하는 이미지 형식입니다.
해결책:
생성 된 이미지가 PNG 형식인지 확인하고 ImagePng () 함수를 사용하여 ImageJPEG () 또는 다른 형식 대신 이미지를 출력하십시오.
PHP의 GD 라이브러리에는 투명성을 처리 할 때 알파 블렌딩 모드를 활성화 해야하는 기능이 있습니다. 그렇지 않으면 투명도 효과가 올바르게 처리되지 않습니다.
해결책:
Alpha Mixing 및 Saving Alpha 채널을 활성화하기 위해 ImageAlphableending () 및 ImagesAvealpha () 기능을 호출하십시오. 예를 들어:
<?php
// 열려 있는 alpha 혼합
imagealphablending($image, false);
// 유지하다 alpha 통로
imagesavealpha($image, true);
이 경우, ImageAlphableDending ($ image, false)을 호출하면 블렌딩 모드가 꺼져 투명성이 이미지에서 더 잘 처리되고 ImagesAvealpha ($ image, true)가 Alpha 채널이 저장되도록합니다.
이미지 형식이 투명성을 지원하고 알파 블렌딩 모드가 활성화 되더라도 투명한 색상 자체는 시각적으로 명확하지 않을 수 있습니다. 이미지에서 매우 약간의 투명성을 사용하는 경우 (예 : 알파 값 127), 그 효과를보기 위해 배경색에서 더 높은 투명성 또는 대비가 필요할 수 있습니다.
해결책:
특히 디버깅 할 때 다른 알파 값을 사용하여 투명성이 높을수록 효과를 확인하십시오. 예를 들어:
$transparent_color = imagecolorallocatealpha($image, 255, 0, 0, 100); // 更高투명도
이미지를 처리 할 때, 출력 이미지의 형식이 투명 영역을 지원하지 않거나 이미지를 저장할 때 투명성 정보가 올바르게 처리되지 않으면 투명도 효과도 표시되지 않습니다. 사용중인 이미지 출력 기능이 투명성을지지하고 이미지가 저장시 투명성 정보를 잃지 않도록하십시오.
해결책:
이미지가 투명하게 지원되는 형식 (예 : PNG)으로 저장되고 이미지를 저장할 때 알파 채널이 올바르게 저장되어 있는지 확인하십시오.
투명성의 영향은 imagecolorallocatealpha () 함수를 통해 PHP에서 구현되지만 투명성 효과를 올바르게 표시 할 수 있도록 다음 조건을 충족해야합니다.
PNG와 같은 투명한 이미지 형식을 사용하십시오.
알파 블렌딩 모드를 켜고 알파 채널을 저장하십시오.
이미지에서 볼 수 있도록 필요에 따라 투명도 값을 조정하십시오.
이 단계를 사용하면 imagecolorallocatealpha ()를 사용하여 투명한 색상을 설정할 때 이미지가 투명한 효과를 올바르게 표시 할 수 있습니다.