PHP에서 ImageOpenPolygon ()은 개방 다각형 (즉, 시작점 및 종말점 라인 세그먼트를 자동으로 연결하지 않는 다각형)을 그리는 데 사용되는 함수입니다. 그래픽 도면, 특히 맞춤형 라인 모양을 다룰 때 매우 유용합니다. 그러나 실제로 다른 버전의 PHP 에서이 기능의 지원 및 성능에 약간의 차이가 있습니다. 아래를 자세히 살펴 보겠습니다.
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 이후에서 위의 코드는 정상적으로 실행하고 열린 쿼드를 그릴 수 있습니다.
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);
지원되는 모든 버전 (PHP 7.2+)에서 ImageOpenPolygon ()은 부울을 반환합니다.
성공 : 진실로 돌아갑니다
실패 : 거짓을 반환합니다
PHP 8.0 이후, 유효하지 않은 매개 변수가 통과되면 (예 : 비 GDIMAGE 유형), 유형의 예외는 False를 반환하지 않고 직접 던져 질 것입니다.
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";
}
완전한 예를 들으려면 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+ 환경에서는 엄격함과 예외 처리 문제를 입력하기 위해주의를 기울여야합니다.