현재 위치: > 최신 기사 목록> ImageOpenPolygon ()가 거짓을 반환합니까? 매개 변수가 잘못 설정되거나 사용법 메소드가 잘못 되었기 때문일 수 있습니다. 그것을 해결하는 방법?

ImageOpenPolygon ()가 거짓을 반환합니까? 매개 변수가 잘못 설정되거나 사용법 메소드가 잘못 되었기 때문일 수 있습니다. 그것을 해결하는 방법?

M66 2025-06-15

PHP의 ImageOpenPolygon () 함수를 사용하여 열린 다각형을 그리면 거짓이 반환되는 상황이 발생합니다. 이는 종종 매개 변수 전달 오류, 이미지 리소스 문제 또는 통화 메소드 문제를 의미합니다. 이 기사는 일반적인 실수부터 시작하여 가능한 원인과 솔루션을 점차적으로 분석하여 문제를 신속하게 찾아서 수정하는 데 도움이됩니다.

1. GD 라이브러리가 올바르게 설치되어 있는지 확인하십시오

ImageOpenPolygon ()은 GD 그래픽 처리 라이브러리의 일부입니다. 서버 환경에 GD 라이브러리가 올바르게 설치되지 않은 경우 GD 기능을 호출하면 실패합니다. 다음 코드로 감지 할 수 있습니다.

 <?php
if (function_exists('imageopenpolygon')) {
    echo "GD 라이브러리가 설치되었습니다,지원 imageopenpolygon() 기능。";
} else {
    echo "GD 라이브러리가 설치되지 않았거나 지원되지 않습니다 imageopenpolygon() 기능,확인하세요 PHP 구성。";
}
?>

프롬프트가 설치되지 않은 경우 서버에 GD 모듈을 설치해야합니다.

 sudo apt install php-gd

설치가 완료된 후 서버를 다시 시작하십시오.

2. 이미지 리소스가 유효한지 확인하십시오

ImageOpenPolygon () 의 첫 번째 매개 변수는 유효한 이미지 리소스 여야합니다. 다음은 이미지 리소스를 만드는 표준 예입니다.

 <?php
$image = imagecreatetruecolor(400, 300);
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
?>

$ image가 imageCreatetRueColor () , imageCreateFromJpeg () 등과 같은 함수에 의해 올바르게 생성 된 이미지 자원이 아닌 경우 imageOpenPolygon () 은 직접 거짓을 반환합니다.

3. 좌표 배열이 올바른 형식인지 확인

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) 이어야합니다.

4. 색상 할당이 맞습니까?

다각형을 그릴 때는 일반적으로 imagecolorallocate () 에 의해 생성되는 색 인덱스를 지정해야합니다. 예를 들어:

 $color = imagecolorallocate($image, 0, 0, 0); // 검은색

초기화되지 않은 색상 값을 직접 전달하면 도면이 실패합니다.

5. 샘플 코드

위의 예방 조치를 바탕으로 다음은 완전하고 운영적인 예입니다.

 <?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

6. 다른 예방 조치

  • PHP 버전이 지원하는지 확인하십시오 (PHP 7.2+의 GD 확장에는 기본적으로 ImageOpenPolygon ()이 포함되어 있는지 확인하십시오).

  • 이미지 출력 전에 올바른 컨텐츠 유형 헤더를 설정하십시오.

  • 이미지 리소스를 사용한 후에는 imageStroy ()를 사용하여 메모리를 확보해야합니다.

7. 요약

ImageOpenPolygon ()이 False를 반환하면 일반적으로 매개 변수 설정 오류 또는 이미지 리소스 문제 로 인해 발생합니다. 위의 검사 단계에 따라 하나씩 문제의 거의 99%를 해결할 수 있습니다.