PHP의 ImageOpenPolygon () 함수를 사용하여 열린 다각형을 그리면 거짓이 반환되는 상황이 발생합니다. 이는 종종 매개 변수 전달 오류, 이미지 리소스 문제 또는 통화 메소드 문제를 의미합니다. 이 기사는 일반적인 실수부터 시작하여 가능한 원인과 솔루션을 점차적으로 분석하여 문제를 신속하게 찾아서 수정하는 데 도움이됩니다.
ImageOpenPolygon ()은 GD 그래픽 처리 라이브러리의 일부입니다. 서버 환경에 GD 라이브러리가 올바르게 설치되지 않은 경우 GD 기능을 호출하면 실패합니다. 다음 코드로 감지 할 수 있습니다.
<?php
if (function_exists('imageopenpolygon')) {
echo "GD 라이브러리가 설치되었습니다,지원 imageopenpolygon() 기능。";
} else {
echo "GD 라이브러리가 설치되지 않았거나 지원되지 않습니다 imageopenpolygon() 기능,확인하세요 PHP 구성。";
}
?>
프롬프트가 설치되지 않은 경우 서버에 GD 모듈을 설치해야합니다.
sudo apt install php-gd
설치가 완료된 후 서버를 다시 시작하십시오.
ImageOpenPolygon () 의 첫 번째 매개 변수는 유효한 이미지 리소스 여야합니다. 다음은 이미지 리소스를 만드는 표준 예입니다.
<?php
$image = imagecreatetruecolor(400, 300);
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
?>
$ image가 imageCreatetRueColor () , imageCreateFromJpeg () 등과 같은 함수에 의해 올바르게 생성 된 이미지 자원이 아닌 경우 imageOpenPolygon () 은 직접 거짓을 반환합니다.
ImageOpenPolygon () 의 두 번째 매개 변수는 [X1, Y1, X2, Y2, X3, y3, ...] 형태로 1 차원 좌표 배열을 전달해야합니다. 배열이 올바르지 않으면 함수도 실패합니다.
오류 예제 (2 차원 배열) :
$points = [
[10, 10],
[100, 50],
[50, 150]
];
imageopenpolygon($image, $points, 3, $color); // 잘못된 글
올바른 예제 (1 차원 배열) :
$points = [10, 10, 100, 50, 50, 150];
imageopenpolygon($image, $points, 3, $color);
배열 요소 수가 아닌 정점 수를 나타내는 세 번째 매개 변수에 특별한주의를 기울입니다. 정점의 수는 (카운트 ($ points) / 2) 이어야합니다.
다각형을 그릴 때는 일반적으로 imagecolorallocate () 에 의해 생성되는 색 인덱스를 지정해야합니다. 예를 들어:
$color = imagecolorallocate($image, 0, 0, 0); // 검은색
초기화되지 않은 색상 값을 직접 전달하면 도면이 실패합니다.
위의 예방 조치를 바탕으로 다음은 완전하고 운영적인 예입니다.
<?php
// 빈 이미지를 만듭니다
$image = imagecreatetruecolor(400, 300);
// 색상을 할당합니다
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
// 배경을 채우십시오
imagefill($image, 0, 0, $white);
// 정의를 정의하십시오
$points = [50, 50, 150, 50, 100, 150];
// 열린 다각형을 그립니다
if (imageopenpolygon($image, $points, 3, $black)) {
echo "성공적으로 그리십시오!";
} else {
echo "드로잉이 실패했습니다,확인하세요参数!";
}
// 브라우저에 이미지를 출력합니다
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
실제 효과를 보려면 위의 코드를 draw_polygon.php 로 저장 한 다음 서버에 액세스 할 수 있습니다.
https://m66.net/draw_polygon.php
PHP 버전이 지원하는지 확인하십시오 (PHP 7.2+의 GD 확장에는 기본적으로 ImageOpenPolygon ()이 포함되어 있는지 확인하십시오).
이미지 출력 전에 올바른 컨텐츠 유형 헤더를 설정하십시오.
이미지 리소스를 사용한 후에는 imageStroy ()를 사용하여 메모리를 확보해야합니다.
ImageOpenPolygon ()이 False를 반환하면 일반적으로 매개 변수 설정 오류 또는 이미지 리소스 문제 로 인해 발생합니다. 위의 검사 단계에 따라 하나씩 문제의 거의 99%를 해결할 수 있습니다.