PHP에서 이미지 처리는 특히 이미지를 생성하거나 수정할 때 매우 일반적인 작업입니다. imagecolorallocatealpha () 와 ImageAlphableending () 은 이미지 투명성 처리에 중요한 역할을하는 이미지 작업에서 두 가지 중요한 기능입니다. ImageColorallocatealpha ()를 사용하여 색상을 설정하고 ImageAlphableending () 함수를 호출하는 것을 잊어 버리고 허위 로 설정하면 이미지 병합이 실패하여 디스플레이 문제가 발생할 수 있습니다. 다음 으로이 문제가 발생하는 이유와 해결 방법을 자세히 살펴 보겠습니다.
imagecolorallocatealpha ()는 이미지가 투명성을 지원해야 할 때 이미지에 색상을 할당하는 데 사용되는 함수입니다. 함수는 다음과 같이 정의됩니다.
imagecolorallocatealpha(resource $image, int $red, int $green, int $blue, int $alpha): int
$ im
$ RED , $ GREEN , $ BLUE : 0에서 255 사이의 색상의 RGB 값.
$ alpha : 투명도 값, 0은 완전히 불투명하며 127은 완전히 투명한 것을 의미합니다.
ImageAlphableending () 함수는 이미지의 블렌딩 모드를 설정하는 데 사용됩니다. 그 기능은 이미지의 투명 부분이 배경 이미지와 병합되어야하는지 여부를 결정하는 것입니다. 함수가 true (기본값)로 설정되면 이미지의 투명 부분이 무시되고 이미지에서 배경 이미지가 완전히 덮어 씁니다. 거짓 으로 설정되면 투명 부분이 이미지 합성에 참여하고 이미지의 투명 부분이 올바르게 표시됩니다.
함수는 다음과 같이 정의됩니다.
imagealphablending(resource $image, bool $blend): bool
$ 이미지 : 이미지 리소스.
$ 블렌드 : True (기본값) 인 경우 이미지 블렌딩 활성화; False 인 경우 이미지 블렌딩을 비활성화하십시오.
ImageColorallocatealpha () 함수를 사용하여 투명성으로 색상을 할당 할 때, ImageAlphableNendending ()을 명시 적으로 호출하고 False 로 설정하지 않으면 이미지의 투명 부분이 최종 이미지에 올바르게 합성되지 않습니다. 이는 ImageAlphableNending () 의 기본값이 사실 이기 때문에 이미지의 투명 부분이 무시되어 이미지 합성 중에 투명 영역이 올바르게 표시되지 않으며 결국 이미지 병합 실패 또는 이미지 합성 효과가 예상되지 않습니다.
예를 들어, 다음 코드는 이미지 병합에 실패합니다.
<?php
// 이미지를 만듭니다
$image = imagecreatetruecolor(100, 100);
// 투명성으로 색상을 설정하십시오
$color = imagecolorallocatealpha($image, 255, 0, 0, 50); // 빨간색,투명도50
// 직사각형을 그립니다
imagefilledrectangle($image, 10, 10, 90, 90, $color);
// 이미지 표시
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
이 코드에서는 Imagealphableending ($ image, false)을 명시 적으로 호출하지 않기 때문에 투명성이 올바르게 적용되지 않습니다. 이는 이미지의 투명 부분이 무시 될 수 있음을 의미하여 최종 이미지 합성이 잘못되었습니다.
이 문제를 해결하려면 이미지의 투명 부분이 최종 이미지로 올바르게 합성 될 수 있도록 ImageAlphableending () 함수를 명시 적으로 호출하고 False 로 설정해야합니다. 수정 된 코드는 다음과 같습니다.
<?php
// 이미지를 만듭니다
$image = imagecreatetruecolor(100, 100);
// 开启투명도支持
imagealphablending($image, false);
// 투명성으로 색상을 설정하십시오
$color = imagecolorallocatealpha($image, 255, 0, 0, 50); // 빨간색,투명도50
// 직사각형을 그립니다
imagefilledrectangle($image, 10, 10, 90, 90, $color);
// 이미지 표시
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
수정 된 코드에서는 투명성을 올바르게 적용 할 수 있도록 ImageAlphableending ($ image, false)이 호출됩니다. 이러한 방식으로, 이미지의 투명 부분은 최종 출력 이미지로 올바르게 합성되어 이미지 합성 실패의 문제를 피할 수 있습니다.
PHP에서 imagecolorallocatealpha () 및 ImageAlphableending () 함수는 이미지 투명성을 다룰 때 매우 중요한 도구입니다. ImageColallocatealpha () 함수를 사용할 때 ImageAlphableending ()을 False 로 설정하는 것을 잊어 버린 경우 이미지의 투명 부분이 올바르게 병합되지 않아 이미지 병합 실패가 발생할 수 있습니다. 따라서 투명성을 다룰 때는 특히 이미지 합성과 관련하여 두 기능이 올바르게 사용되도록해야합니다.