현재 위치: > 최신 기사 목록> 다른 PHP 버전에서 imageOpenPolygon ()의 성능 차이

다른 PHP 버전에서 imageOpenPolygon ()의 성능 차이

M66 2025-05-17

PHP에서 ImageOpenPolygon ()은 개방 다각형 (즉, 시작점 및 종말점 라인 세그먼트를 자동으로 연결하지 않는 다각형)을 그리는 데 사용되는 함수입니다. 그래픽 도면, 특히 맞춤형 라인 모양을 다룰 때 매우 유용합니다. 그러나 실제로 다른 버전의 PHP 에서이 기능의 지원 및 성능에 약간의 차이가 있습니다. 아래를 자세히 살펴 보겠습니다.

1. ImageOpenPolygon () 소개

ImageOpenPolygon () 함수는 PHP 버전 7.2.0 에 도입되었습니다. 이 기능은 이전 버전 (예 : PHP 5.X 또는 PHP 7.0/7.1)에서 사용할 수 없었으므로 이전 버전에서 사용하면 치명적인 오류 로 직접 연결됩니다.

 // PHP 7.1 이전 버전을 실행하십시오
$im = imagecreatetruecolor(200, 200);
$points = [50, 50, 150, 50, 150, 150, 50, 150];
// 이로 인해 치명적인 오류가 발생합니다,함수가 존재하지 않기 때문입니다
imageopenpolygon($im, $points, 4, imagecolorallocate($im, 255, 0, 0));

PHP 7.2 이후에서 위의 코드는 정상적으로 실행하고 열린 쿼드를 그릴 수 있습니다.

2. 매개 변수 변경 및 사양

ImageOpenPolygon () 의 기본 매개 변수 정의는 PHP 7.2 이후 고정되었으며 후속 버전은 변경되지 않았습니다. 매개 변수는 다음과 같습니다.

 bool imageopenpolygon(
    GdImage $image,
    array $points,
    int $num_points,
    int $color
)
  • $ 이미지 : imageCreatetRueColor () 또는 유사한 함수에 의해 생성 된 이미지 리소스.

  • $ 포인트 : 일련의 X 및 Y 좌표를 포함하는 1 차원 배열.

  • $ NUM_POINTS : 정점 수 (배열 요소의 수가 아닌).

  • $ color : imageColorAllocate () 에 의해 생성 된 라인 색상.

PHP 8.0 이후, 전체 유형 시스템의 강화로 리소스 유형 자원 (자원)이 공식적으로 GDimage 객체 로 변환되었습니다. 따라서 PHP 8.0+에서는 $ 이미지gdimage 인스턴스 여야합니다. 그렇지 않으면 TypeError가 트리거됩니다.

예제 (PHP 8.0+) :

 $im = imagecreatetruecolor(200, 200);
$red = imagecolorallocate($im, 255, 0, 0);
$points = [50, 50, 150, 50, 150, 150, 50, 150];
imageopenpolygon($im, $points, 4, $red);
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

3. 반환 가치 동작

지원되는 모든 버전 (PHP 7.2+)에서 ImageOpenPolygon ()은 부울을 반환합니다.

  • 성공 : 진실로 돌아갑니다

  • 실패 : 거짓을 반환합니다

PHP 8.0 이후, 유효하지 않은 매개 변수가 통과되면 (예 : 비 GDIMAGE 유형), 유형의 예외는 False를 반환하지 않고 직접 던져 질 것입니다.

4. 오류 처리

  • PHP 7.2-7.4 : 오류 매개 변수 유형을 전달하고 일반적으로 False를 반환하고 e_warning을 트리거합니다.

  • PHP 8.0+ : 오류 매개 변수 유형은 더 이상 경고가 아닌 TypeError Exception을 직접 던집니다.

예제 (오류 처리 데모) :

 try {
    $invalidImage = 'not a resource';
    $points = [10, 10, 20, 20, 30, 10];
    imageopenpolygon($invalidImage, $points, 3, 0xFF0000);
} catch (TypeError $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

5. 실제 사례 데모

완전한 예를 들으려면 ImageOpenPolygon ()을 사용하여 간단한 개방 다각형을 그리고 이미지를 브라우저에 출력하십시오.

 <?php
$im = imagecreatetruecolor(300, 300);
$background = imagecolorallocate($im, 255, 255, 255); // 흰색 배경
$lineColor = imagecolorallocate($im, 0, 0, 255); // 블루 라인

$points = [
    50, 50,
    250, 50,
    250, 250,
    50, 250
];

imagefill($im, 0, 0, $background);
imageopenpolygon($im, $points, 4, $lineColor);

// 브라우저에 출력
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
?>

브라우저는이 PHP 파일에 액세스합니다.

 https://m66.net/draw_polygon.php

파란색 선으로 그려진 열린 직사각형 상자를 볼 수 있습니다.

요약

PHP 버전 지원하다 주목
<7.2 지원되지 않으면 통화가 직접 오류입니다
7.2-7.4 지원되는 느슨한 매개 변수 유형 리소스는 리소스 유형입니다
8.0+ 지원되는 엄격한 매개 변수 요구 사항 gdimage 유형, 오류는 예외를 직접 발생시킵니다

따라서 개발 중에 PHP 7.1 이하와 호환되는 경우 ImageOpenPolygon () 사용을 피하거나 코드에서 버전 검사를 수행하지 않아야합니다. PHP 8.0+ 환경에서는 엄격함과 예외 처리 문제를 입력하기 위해주의를 기울여야합니다.