현재 위치: > 최신 기사 목록> ImageOpenPolygon ()은 알파 구배와 협력하여 반투명 효과를 달성합니다

ImageOpenPolygon ()은 알파 구배와 협력하여 반투명 효과를 달성합니다

M66 2025-05-29

PHP에서 GD 라이브러리로 그리면 알파 채널을 사용하여 알파 채널과 함께 처리해야합니다. 이 기사에서는 Alpha Gradient를 사용하여 ImageOpenPolygon () 기능을 통해 부드럽고 반투명 다각형 효과를 그리는 방법을 살펴 보겠습니다.

ImageOpenPolygon ()이란 무엇입니까?

ImageOpenPolygon () 은 PHP GD 라이브러리의 드로잉 기능으로 캔버스에 열린 다각형을 그리는 데 사용됩니다. ImagePolygon () (Closing Polygon)과 달리 ImageOpenPolygon ()은 다각형의 선만 그려서 시작 및 끝점을 자동으로 닫지 않습니다.

함수의 기본 구문은 다음과 같습니다.

 bool imageopenpolygon(GdImage $image, array $points, int $num_points, int $color)
  • $ 이미지 : 대상 이미지 리소스.

  • $ 포인트 : 포인트 좌표가 포함 된 배열, [x1, y1, x2, y2, ..., xn, yn] .

  • $ num_points : 포인트 수.

  • $ color : 그림에 사용되는 색상.

알파 그라디언트 효과를 추가하는 방법?

GD 라이브러리는 RGBA 형식 색상을 지원하므로 색상이 투명성 (알파)을 가질 수 있습니다. 알파 값을 제어함으로써, 그라디언트의 투명 효과가 달성 될 수있다.

샘플 코드

다음은 ImageOpenPolygon ()을 사용하여 반 트랜스 펜트 그라디언트로 다각형을 그리는 방법을 보여주는 실용적인 예입니다.

 <?php
// 캔버스를 만듭니다
$width = 400;
$height = 400;
$image = imagecreatetruecolor($width, $height);

// 할 수 있게 하다 alpha 채널 저장 정보
imagesavealpha($image, true);

// 배경을 투명한 색상으로 채우십시오
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);

// 다각형의 점을 정의하십시오
$points = [
    50, 50,
    350, 50,
    350, 350,
    50, 350
];

// 투명성이 다른 다각형 선을 그리기 시작하십시오
$steps = 10;
for ($i = 0; $i <= $steps; $i++) {
    $alpha = (int)($i * (127 / $steps)); // alpha ~에서0(불투명체)도착하다127(완전히 투명합니다)

    $color = imagecolorallocatealpha($image, 255, 0, 0, $alpha); // 빨간색,다른 투명성으로

    // 스케일링 포인트를 계산하십시오
    $scaledPoints = [];
    foreach ($points as $index => $coord) {
        $offset = 5 * $i;
        if ($index % 2 == 0) { // x 동등 어구
            $scaledPoints[] = $coord + $offset;
        } else { // y 동등 어구
            $scaledPoints[] = $coord + $offset;
        }
    }

    imageopenpolygon($image, $scaledPoints, count($scaledPoints) / 2, $color);
}

// 출력 사진
header('Content-Type: image/png');
imagepng($image);

// 자원을 파괴하십시오
imagedestroy($image);
?>

효과 설명

이 코드는 루프를 통해 루프를 통해 다각형을 약간 팽창시키고 한 번에 투명성을 줄여서 중앙에서 바깥쪽으로 분기되는 반 투명 기울기를 달성합니다. ImageOpenPolygon () 은 열린 다각형을 그리기 때문에 중간에 단단한 채우기가 없어서 매우 섬세한 그라디언트 라인 느낌을 유지합니다.

최종 효과를 보려면 위의 코드를 .php 파일로 저장하고 서버에 업로드 할 수 있습니다.

 https://m66.net/demo/transparent_polygon.php

(PHP 환경으로 서버를 구성하고 GD 라이브러리가 활성화되어 있는지 확인하십시오.)

주목해야 할 것

  • ImagesAvealpha ($ image, true)를 호출해야합니다. 그렇지 않으면 출력시 투명한 정보가 저장되지 않습니다.

  • imagecolorallocatealpha () 의 마지막 매개 변수는 알파 값이며, 0 (완전히 불투명)에서 127 (완전히 투명) 범위입니다.

  • PHP 8.0에서 시작하여 GD 라이브러리의 객체 모델이 변경되었으므로 버전 차이에주의하십시오.

요약

Alpha Gradient와 함께 ImageOpenPolygon ()을 사용하면 실제로 반투명 및 다단계 라인 드로잉 효과를 매우 쉽게 달성 할 수 있습니다. 이 기술은 멋진 UI 구성 요소를 그리는 데 사용될뿐만 아니라 동적 배경, 특수 효과 그래픽 등을 생성하는 데 매우 실용적입니다.