Beim Zeichnen von Polygonen mithilfe von PHPs ImageOpenPolygon () -Funktion stoßen Sie manchmal Situationen, in denen Falsch zurückgegeben wird. Dies bedeutet häufig, dass Parameter -Übergebene, Bildressourcenprobleme oder ein Problem mit der Anrufmethode. Dieser Artikel beginnt mit allgemeinen Fehlern und analysiert nach und nach mögliche Ursachen und Lösungen, damit Sie Probleme schnell finden und korrigieren können.
ImageOpenPolygon () ist Teil der GD -Grafikverarbeitungsbibliothek. Wenn die GD -Bibliothek in der Serverumgebung nicht korrekt installiert ist, schlägt die Aufrufen einer GD -Funktion fehl. Es kann durch den folgenden Code erkannt werden:
<?php
if (function_exists('imageopenpolygon')) {
echo "GD Die Bibliothek ist installiert,Und Unterstützung imageopenpolygon() Funktion。";
} else {
echo "GD Die Bibliothek ist nicht installiert oder nicht unterstützt imageopenpolygon() Funktion,Bitte überprüfen PHP Konfiguration。";
}
?>
Wenn die Eingabeaufforderung nicht installiert ist, müssen Sie das GD -Modul auf dem Server installieren, z. B.:
sudo apt install php-gd
Denken Sie daran, den Server nach Abschluss der Installation neu zu starten.
Der erste Parameter von ImageOpenPolygon () muss eine gültige Bildressource sein. Hier ist ein Standardbeispiel für das Erstellen einer Bildressource:
<?php
$image = imagecreatetruecolor(400, 300);
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
?>
Wenn $ Image keine Bildressource ist, die durch Funktionen wie ImagecrreatTueColor () , ImagecreateFromjpeg () usw. korrekt erzeugt wird, gibt ImageOpenPolygon () die falsche zurück.
Der zweite Parameter von ImageOpenpolygon () muss ein eindimensionales Koordinaten-Array in der Form [x1, y1, x2, y2, x3, y3, ...] übergeben. Wenn das Array falsch ist, fällt auch die Funktion fehl.
Fehlerbeispiel (zweidimensionales Array):
$points = [
[10, 10],
[100, 50],
[50, 150]
];
imageopenpolygon($image, $points, 3, $color); // Falsches Schreiben
Richtiges Beispiel (eindimensionales Array):
$points = [10, 10, 100, 50, 50, 150];
imageopenpolygon($image, $points, 3, $color);
Achten Sie besonders auf den dritten Parameter, der die Anzahl der Scheitelpunkte darstellt, nicht auf die Anzahl der Array -Elemente. Die Anzahl der Scheitelpunkte sollte (zählen ($ Punkte) / 2) .
Beim Zeichnen von Polygonen müssen Sie einen Farbindex angeben, der normalerweise von ImageColoralClocate () erzeugt wird. Zum Beispiel:
$color = imagecolorallocate($image, 0, 0, 0); // Schwarz
Wenn Sie den nicht initialisierten Farbwert direkt übergeben, wird auch die Zeichnung fehlschlägt.
Basierend auf den obigen Vorsichtsmaßnahmen finden Sie hier ein vollständiges und operatives Beispiel:
<?php
// Erstellen Sie ein leeres Bild
$image = imagecreatetruecolor(400, 300);
// Farben zuweisen
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
// Füllen Sie den Hintergrund
imagefill($image, 0, 0, $white);
// Scheitelpunkte definieren
$points = [50, 50, 150, 50, 100, 150];
// Polygone aufziehen
if (imageopenpolygon($image, $points, 3, $black)) {
echo "Erfolgreich zeichnen!";
} else {
echo "Zeichnen fehlgeschlagen,Bitte überprüfen参数!";
}
// Ausgabe Bild zum Browser
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
Wenn Sie den tatsächlichen Effekt sehen möchten, können Sie den oben genannten Code als Draw_polygon.php speichern und dann auf Ihren Server zugreifen, z. B.:
https://m66.net/draw_polygon.php
Stellen Sie sicher, dass die PHP -Version unterstützt (die GD -Erweiterung in PHP 7.2+ enthält standardmäßig ImageOpenPolygon () ).
Stellen Sie sicher, dass Sie den korrekten Header vom Typ Inhalt vor der Bildausgabe festlegen.
Denken Sie nach der Verwendung von Bildressourcen daran, Imagedestroy () zu verwenden, um den Speicher freizugeben.
Wenn ImageOpenPolygon () False zurückgibt, wird es normalerweise durch Parametereinstellungsfehler oder Bildressourcenprobleme verursacht. Nach den obigen Inspektionsschritten nacheinander können fast 99% der Probleme gelöst werden.