현재 위치: > 최신 기사 목록> imagecolorallocatealpha () 및 ImageFill ()을 사용하여 이미지의 투명한 배경을 설정하는 방법?

imagecolorallocatealpha () 및 ImageFill ()을 사용하여 이미지의 투명한 배경을 설정하는 방법?

M66 2025-05-23

이미지 처리를 위해 PHP의 GD 라이브러리를 사용하는 경우, 때로는 흰색 또는 검은 색으로 채우는 대신 PNG 이미지를 생성 할 때 배경을 투명하게 만드는 등 이미지의 투명한 배경을 설정해야합니다. 이 효과를 달성하기 위해 주로 두 가지 함수의 imagecolorallocatealpha ()imagefill ()을 사용할 수 있습니다.

이 기사에서는이 두 기능을 사용하는 방법을 자세히 설명하고 전체 샘플 코드를 제공합니다.

기능 소개

imagecolorallocatealpha ()

 int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )

이 기능은 지정된 이미지에 색상을 할당하고 투명성을 설정하는 데 사용됩니다.

  • $ RED, $ GREEN, $ BLUE : RGB 색상 값 (0-255)

  • $ alpha : 투명성 값 (0은 완전히 불투명하고 127은 완전히 투명합니다)

반환 된 값은 색상 식별자이며 imageFill () 과 같은 함수에서 사용할 수 있습니다.

imageFill ()

 bool imagefill ( resource $image , int $x , int $y , int $color )

이 기능은 지정된 색상으로 이미지를 채우는 데 사용됩니다.

  • $ x, $ y : 시작점의 좌표를 채우십시오.

  • $ Color : 사용할 색상 식별자

imagecolorallocatealpha () 와 결합하여 전체 캔버스를 투명한 색상으로 채울 수 있습니다.

실제 예 : 투명한 배경으로 PNG 이미지를 만듭니다

다음은 GD 라이브러리를 사용하여 투명한 배경을 가진 200x200 PNG 이미지를 생성하고 중간에 빨간색 원을 그리는 방법을 보여주는 완전한 PHP 코드입니다.

 <?php
// a 200x200 진정한 색상 이미지
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);

// 색상 믹싱 모드를 끄십시오,저장을 활성화하십시오 alpha 채널 정보
imagealphablending($image, false);
imagesavealpha($image, true);

// 완전히 투명한 색상을 할당하십시오
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);

// 투명한 색상으로 전체 캔버스를 채우십시오
imagefill($image, 0, 0, $transparent);

// 빨간색을 할당하십시오(불투명체)
$red = imagecolorallocate($image, 255, 0, 0);

// 중간에 빨간 원을 그립니다
imagefilledellipse($image, $width / 2, $height / 2, 100, 100, $red);

// 출력 이미지입니다 PNG
header('Content-Type: image/png');
imagepng($image);

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

코드 구문 분석

1 ??? 이미지 리소스 만들기 <br> 우리는 imageCreatetRueColor ()를 사용하여 진정한 색상 캔버스를 만듭니다.

2 ?? 투명한 배경을 활성화합니다
GD는 기본적으로 알파 정보를 저장하지 않으며 다음을 요구합니다.

 imagealphablending($image, false);
imagesavealpha($image, true);

3 ???? 투명한 색상으로 할당하고 채우십시오 <br> ImageColorallocatealpha ()를 사용하여 완전히 투명한 색상 (alpha = 127)을 만들고 imageFill ()을 사용하여 전체 캔버스를 채 웁니다.

4 ?? 콘텐츠 그리기 <br> 여기서 우리는 텍스트, 줄, 그림 등으로 변경할 수있는 빨간 원을 그렸습니다.

5 ?? 출력 이미지 <br> 헤더 ( 'content-type : image/png')를 사용하여 출력 유형을 설정 한 다음 imagepng ()를 사용하여 브라우저에 출력하거나 파일 이름을 전달하여 디스크에 저장하십시오.

 imagepng($image, '/path/to/save/output.png');

? 파일 <br>에 저장하십시오 이미지를 서버에 저장하려면 다음을 수행 할 수 있습니다.

 imagepng($image, 'https://m66.net/images/output.png');

? GIF로 전환하십시오
GIF는 또한 투명한 배경을 지원하지만 투명한 구현 방법은 다릅니다. imageColorTransparent ()를 사용할 수 있습니다.

? 권한에주의를 기울이십시오 <br> 서버 디렉토리에 저장할 때 PHP 프로세스에 쓰기 권한이 있는지 확인하십시오.