PHP 이미지 처리 중에 imagecolorallocatealpha () 함수는 이미지에 투명성을 가진 색상을 할당하는 데 사용됩니다. 그러나 많은 개발자들이 PNG 형식의 이미지에서 함수를 사용할 때 제대로 작동하지 않는 문제를 겪을 수 있습니다. 이 기사는 왜 이런 일이 발생하는지를 파고 그에 대한 이유를 설명하려고 노력할 것입니다.
ImageColoralLocateAlpha () 함수는 색상을 할당하고 이미지에 투명성을 설정하는 데 사용됩니다. 기본 구문은 다음과 같습니다.
int imagecolorallocatealpha(resource $image, int $red, int $green, int $blue, int $alpha);
$ 이미지 : 대상 이미지 리소스.
$ RED , $ GREEN , $ BLUE : RGB 구성 요소 (0 ~ 255).
$ Alpha : 투명성 (0은 완전히 불투명하고 127은 완전히 투명합니다).
이미지 형식이 투명성 (예 : PNG)을 지원하는 경우이 함수를 사용하여 투명성을 설정하여 이미지의 픽셀이 투명하거나 반투명합니다.
문제의 핵심은 이미지 형식의 지원에 있습니다. PNG는 알파 채널을 사용하여 투명성 정보를 저장하는 투명한 형식입니다. 그러나 JPEG 및 GIF와 같은 다른 일반적인 이미지 형식은 알파 채널 또는 투명성의 전체 기능을 지원하지 않습니다.
JPEG는 투명성에 관계없이 설계된 압축 형식입니다. 따라서 JPEG 이미지에서는 imagecolorallocatealpha () 의 투명성 매개 변수가 무시됩니다. 이 기능을 통해 투명성을 설정하더라도 이미지에 예상되는 효과가 없습니다. 투명한 픽셀은 불투명 한 색상으로 처리됩니다.
GIF 형식은 투명한 색상 (즉, 단일 투명 픽셀)을 지원하지만 PNG와 같은 알파 채널을 지원하지 않습니다. GIF 이미지는 픽셀 당 완전한 투명성 또는 전체 불투명성 만 지원하며 부분적으로 투명 할 수 없습니다. 따라서, imagecolorallocatealpha () 의 알파 매개 변수는 또한 GIF 이미지에 사용되는 것이 제한적이다.
또한, 일부 이미지 유형 (예 : JPEG)은 내부 처리의 제한으로 인해 투명성을 제대로 지원하지 않을 수 있습니다. ImageColoralLocatealpha () 를 통해 투명성이 코드에 설정 되더라도 이러한 이미지 유형은 투명 픽셀을 올바르게 처리하지 못할 수 있습니다.
ImageColorallocatealpha () 가 올바르게 작동하기 위해서는 알파 채널, 특히 PNG 형식을 지원하는 이미지 형식을 사용하는 것이 좋습니다. 예는 다음과 같습니다.
<?php
// a 100x100 ~의 PNG 영상
$image = imagecreatetruecolor(100, 100);
// 열려 있는 alpha 채널 지원
imagesavealpha($image, true);
// 分配带有透明度~의颜色
$transparent_color = imagecolorallocatealpha($image, 255, 0, 0, 50);
// 填充영상背景为该透明颜色
imagefill($image, 0, 0, $transparent_color);
// 출력은입니다 PNG 체재
header('Content-Type: image/png');
imagepng($image);
// 리소스 정리
imagedestroy($image);
?>
ImageColoralLocatealpha () 함수는 주로 이미지 형식 자체의 한계로 인해 비 PNG 형식으로 정상적으로 사용할 수 없습니다. JPEG는 투명성을 지원하지 않지만 GIF는 단일 투명 픽셀 만 지원하며 PNG와 같은 투명 채널을 지원할 수 없습니다. 투명성 효과를 사용해야하는 경우 투명성 (예 : PNG)을 지원하는 이미지 형식을 선택하십시오.