현재 위치: > 최신 기사 목록> imagecopymerge ()와 병합되는 투명 층 구현

imagecopymerge ()와 병합되는 투명 층 구현

M66 2025-05-23

PHP의 이미지 처리 라이브러리 GD에서 imagecopymerge ()는 이미지를 다른 이미지에 결합하고 병합의 투명성 (실제로 병합의 "믹싱 레벨)을 허용하는 일반적인 기능입니다. 그러나 간단한 불투명도 조정이 아닌 실제 알파 채널을 사용하는 것과 같이 투명성을보다 잘 제어하려면 imagecolorallocatealpha () 와 함께 사용해야합니다.

이 기사는 imagecolorallocatealpha ()를 사용하여 알파 채널 (투명성)으로 색상을 정의하고 imagecopymerge ()를 결합하여 투명 효과와 병합되는 층을 달성하는 방법을 소개합니다.

1 ??? 기본 소개

  • imagecolorallocatealpha (자원 $ image, int $ red, int $ green, int $ blue, int $ alpha)
    지정된 이미지에 알파 채널이있는 색상을 할당하는 데 사용됩니다. $ alpha 의 값은 0 (완전히 불투명)에서 127 (완전히 투명)입니다.

  • imageEcopymerge (자원 $ dst_im, 자원 $ src_im, int $ dst_x, int $ dst_y, int $ src_x, int $ src_y, int $ src_w, int $ src_h, int $ pct)
    $ src_im 이미지를 $ dst_im 에 복사하고 $ pct 로 블렌딩 정도를 설정하십시오 (0 = 완전히 투명, 100 = 완전히 불투명).

ImageCopymerge () 는 실제로 실제 알파 채널 믹싱을 지원하지 않으며 픽셀 밝기를 조정하여 투명한 효과를 시뮬레이션합니다. 더 미세한 반투명 병합이 필요한 경우 imagecopy ()를 사용하고 소스 이미지에서 imagecolorallocatealpha () 로 투명 영역을 채울 수 있습니다.

2 ?? 샘플 코드 : 층은 투명한 효과와 병합됩니다

다음은 투명한 배경 레이어를 작성하여 기본 이미지에 병합하는 방법을 보여주는 완전한 예입니다.

 <?php
// 기본 이미지를 만듭니다(배경)
$background = imagecreatetruecolor(400, 300);
$white = imagecolorallocate($background, 255, 255, 255);
imagefilledrectangle($background, 0, 0, 400, 300, $white);

// 투명한 층을 만듭니다
$layer = imagecreatetruecolor(200, 150);
imagesavealpha($layer, true);
$transparent = imagecolorallocatealpha($layer, 0, 0, 0, 127); // 완전히 투명합니다
imagefill($layer, 0, 0, $transparent);

// 레이어에 반투명 빨간 사각형을 그립니다
$red_alpha = imagecolorallocatealpha($layer, 255, 0, 0, 63); // 투명한
imagefilledrectangle($layer, 20, 20, 180, 130, $red_alpha);

// 레이어를 기본 이미지로 병합하십시오(알아채다 imagecopymerge 지원되지 않습니다 alpha 통로)
imagecopy($background, $layer, 100, 75, 0, 0, 200, 150);

// 출력 결과
header('Content-Type: image/png');
imagepng($background);

// 기억을 청소하십시오
imagedestroy($background);
imagedestroy($layer);
?>

3 ???? 코드 구문 분석

  • imageCreatetRueColor ()는 진정한 색상 캔버스를 만드는 데 사용됩니다.

  • ImagesAvealpha ()는 깃발을 엽니 다. 투명한 정보가 손실되지 않도록 알파 채널을 저장합니다.

  • imagecolorallocatealpha ()는 투명성을 가진 색상을 정의하여 완전히 투명한 배경과 반투명 빨강을 만듭니다.

  • imageecopymerge () 대신 imageCopy ()는 알파 채널을 보존하는 데 사용됩니다. ImageCopymerge ()를 사용하는 경우 GD 라이브러리는 알파 믹싱을 닫히고 $ pct 만 사용하여 투명성을 시뮬레이션합니다.

  • 마지막으로 imagePng ()를 사용하여 생성 된 이미지를 출력하십시오.