PHP에서 이미지 처리를 수행 할 때 imagecolorallocatealpha () 는 매우 중요한 기능입니다. 색상을 할당 할뿐만 아니라 투명도도 제어합니다. 그러나 많은 개발자들은 종종 올바른 문제로 인해 사용될 때 비정상적인 이미지 투명성 문제를 겪습니다.
이 기사는이 문제를 자세히 분석하여 imagecolorallocatealpha () 함수를 올바르게 사용하는 데 도움이됩니다.
imagecolorallocatealpha ()는 GD 라이브러리 기반 이미지에 투명성을 가진 색상을 할당하는 데 사용됩니다.
기본 구문은 다음과 같습니다.
int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )
매개 변수 설명 :
$ im
$ RED , $ GREEN , $ BLUE : RGB 색상 구성 요소, 범위 0–255.
$ 알파 : 투명도 값, 범위 0–127 .
참고 : 알파 는 0–255가 아니라 0 (완전히 불투명) ~ 127 (완전히 투명)입니다 .
많은 개발자가하는 첫 번째 실수는 다음과 같습니다. 알파의 가치는 RGB와 같은 0–255라고 생각하지만 직접 255를 채 웁니다.
예를 살펴 보겠습니다.
<?php
$img = imagecreatetruecolor(200, 200);
$color = imagecolorallocatealpha($img, 255, 0, 0, 255); // 실수
여기에있는 알파는 255 인 반면 GD 라이브러리는 최대 127 명만 허용합니다. 범위를 벗어난 것이기 때문에 GD는 127로 취급하여 완전한 투명성을 초래합니다.
올바른 글쓰기 :
<?php
$img = imagecreatetruecolor(200, 200);
$color = imagecolorallocatealpha($img, 255, 0, 0, 0); // 불투명성 빨간색
$semi_transparent = imagecolorallocatealpha($img, 255, 0, 0, 64); // 반투명 빨간색
GD 라이브러리는 이러한 방식으로 알파 값을 이해하기 때문에 다음과 같습니다.
0 : 완전히 불투명합니다
127 : 완전히 투명합니다
255를 채우는 경우 GD는 Min ($ alpha, 127)을 사용하므로 최대 투명성으로 간주됩니다. 이것은 다음으로 이어진다.
나는 원래 빨간색을 그리고 싶었지만 볼 수 없었습니다.
나는 원래 반투명을 그리고 싶었지만 완전히 투명한 것으로 판명되었습니다.
? 기억하십시오 : 알파 범위는 0–255가 아닌 0–127입니다.
0–255 범위 (예 : CSS 또는 RGBA 공통 값)에서 투명성 설계를 사용하는 경우 변환을 수행해야합니다.
$css_alpha = 128; // 가정합니다 0–255 표현하다
$gd_alpha = intval(127 * (255 - $css_alpha) / 255); // 변환 GD 사용 된 가치
이를 통해 PHP에서 일관된 투명성을 보장합니다.
완전한 예와 함께 이것들을 묶어 봅시다.