PHP에서 GD 라이브러리를 사용하여 이미지를 처리 할 때 ImagePng ()을 사용하여 이미지를 저장 한 후 이미지 배경을 투명하게 설정하기 위해 ImageColallocatealpha 기능을 호출 할 때 이미지의 배경이 검은 색이됩니다. 이 질문은 종종 개발자, 특히 투명한 배경으로 PNG 이미지를 다룰 때 개발자를 혼동합니다. 이 기사는 이것이 왜 발생하는지 자세히 설명하고 해결책을 제공합니다.
GD 라이브러리는 PHP의 이미지 처리를위한 표준 라이브러리입니다. JPEG, PNG, GIF 등을 포함한 다양한 이미지 형식의 생성 및 수정을 지원합니다. 투명도로 PNG 이미지를 생성하기 위해 개발자는 일반적으로 ImageColoralLocatealpha를 사용하여 이미지에 투명한 색상을 할당합니다. 그러나 이미지 배경이 투명 할 것으로 예상하지만 ImagePng ()을 통해 내보내는 PNG 이미지는 종종 검은 배경을 가지고 있습니다.
문제의 근본 원인은 GD 라이브러리와 PNG 형식이 처리되는 방식에 있습니다. PNG 형식은 투명성을 지원하며 투명성 구현은 알파 채널이라는 메커니즘을 통해 달성됩니다. ImageColoralLocateAlpha 기능을 통해 색상의 투명성 정도를 제어하는 투명도 값을 지정할 수 있습니다. 투명성의 값은 일반적으로 0과 127 사이이며, 0은 총 불투명을 나타내고 127은 완전한 투명성을 나타냅니다.
그러나 GD 라이브러리는 PNG 이미지의 투명한 배경을 자동으로 설정하지 않습니다. PNG 이미지를 저장할 때 ImagePng () 함수는 기본적으로 투명한 배경 지원을 가능하게하지 않습니다. 따라서 투명한 색상을 사용하더라도 이미지의 투명 배경을 올바르게 구성하지 않으면 생성 된 PNG 이미지는 검은 색 배경을 갖습니다.
이 문제를 해결하려면 PNG 이미지를 생성 할 때 투명한 배경이 활성화되어 있는지 확인해야합니다. 이미지 저장 옵션은 ImagePng () 함수의 세 번째 매개 변수를 통해 제어 될 수 있으며 ImageAlphableding () 및 ImagesAvealpha () 함수를 사용하여 이미지 투명성 처리를 설정해야합니다.
다음은 솔루션에 대한 샘플 코드입니다.
<?php
// 진정한 색상 이미지를 만듭니다
$image = imagecreatetruecolor(200, 200);
// 투명한 색상을 할당하십시오
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
// 배경을 투명하게 채우십시오
imagefill($image, 0, 0, $transparent);
// 열려 있는alpha blending
imagealphablending($image, false);
// 투명성 정보를 저장하십시오
imagesavealpha($image, true);
// 그래픽을 그립니다,빨간 사각형처럼
$red = imagecolorallocate($image, 255, 0, 0);
imagefilledrectangle($image, 50, 50, 150, 150, $red);
// 출력은입니다PNG체재
imagepng($image, 'output.png');
// 이미지 자원을 파괴하십시오
imagedestroy($image);
?>
이미지 만들기 : imageCreatetRueColor () 함수를 사용하여 200x200의 진정한 색상 이미지를 만듭니다.
투명한 색상 할당 : imagecolorallocatealpha () 는 투명도로 색상을 할당합니다. 이 예에서 투명성은 127입니다. 즉, 완전히 투명합니다.
배경 채우기 : ImageFill () 함수는 이미지의 배경을 투명한 색상으로 채 웁니다.
Alpha Blending : ImageAlphableending () 함수가 False 로 설정되어 알파 블렌딩이 비활성화되어 투명한 픽셀이 올바르게 저장되도록합니다.
투명성 정보 저장 : ImagesAvealpha () 함수는 투명성 정보가 PNG 파일에 저장되도록합니다.
그래프를 그리십시오 : 빨간색 사각형을 그려 이미지에 내용을 표시하십시오.
이미지 저장 : ImagePng ()를 사용하여 이미지를 PNG 형식으로 저장하십시오.
이런 식으로, 우리는 기본 검은 색 배경보다는 이미지의 배경이 투명해야합니다.
ImageColallocatealpha 기능을 사용하는 경우 이미지 투명성 처리가 올바르게 설정되지 않으면 ImagePng () 로 내보낸 이미지 배경이 검은 색으로 변할 수 있습니다. 이 문제를 해결하려면 알파 블렌딩을 켜고 투명성 정보가 저장되도록해야합니다. 이러한 매개 변수를 올바르게 구성함으로써 생성 된 PNG 이미지는 투명한 배경을 유지합니다.
이 기사가 문제를 해결하고 투명한 배경으로 PNG 이미지를 성공적으로 처리하는 데 도움이되기를 바랍니다.