Wenn Sie in PHP ein reguläres Polygon wie ein Pentagon, Sechseck oder mehr zeichnen möchten, können wir die ** trigonometrische Funktion (sin und cos) verwenden, um die Koordinaten jedes Scheitelpunkts leicht zu berechnen und durch die ImageOpenPolygon () -Funktion zu zeichnen.
In diesem Tutorial wird ausführlich erläutert, wie es implementiert werden soll.
Stellen Sie zunächst sicher, dass in Ihrer PHP -Umgebung die GD -Grafikbibliothek aktiviert ist. GD ist die grundlegende Bibliothek zum Zeichnen von Bildern. Wenn Sie einen regulären PHP -Server verwenden, ist er normalerweise standardmäßig aktiviert.
Eine trigonometrische Funktion kann einen Winkel in einen Koordinatenpunkt umwandeln. Angenommen, wir verwenden einen bestimmten Mittelpunkt (CenterX, Centery) als Referenz und fixieren den Radius -Radius , der Winkel jedes Scheitelpunkts kann übergeben werden:
$angle = 2 * pi() * $i / $sides;
In:
$ i ist der Index des aktuellen Punktes (wie viele Punkte)
$ sides ist die Anzahl der Seiten, zum Beispiel ist das Pentagon 5
pi () gibt pi π zurück, 2π ist ein vollständiger Kreis (360 Grad)
Dann verwenden Sie:
$x = $centerX + $radius * cos($angle);
$y = $centerY + $radius * sin($angle);
Berechnen Sie die Position jedes Scheitelpunkts.
Hier ist ein praktisches Beispiel: Erzeugen eines normalen Sechsecks (6-seitig) und zum Zeichnen auf das Bild:
<?php
// Erstellen Sie eine Leinwand
$image = imagecreatetruecolor(400, 400);
// Farben zuweisen
$background = imagecolorallocate($image, 255, 255, 255); // Weißer Hintergrund
$polygonColor = imagecolorallocate($image, 0, 0, 255); // Blaues Polygon
// Füllen Sie den Hintergrund
imagefill($image, 0, 0, $background);
// Polygonparameter
$sides = 6; // Anzahl der Kanten
$centerX = 200; // CenterX
$centerY = 200; // CenterY
$radius = 100; // Radius
// Scheitelpunkt erzeugen
$points = [];
for ($i = 0; $i < $sides; $i++) {
$angle = 2 * pi() * $i / $sides - pi() / 2; // Nach oben starten,Also subtrahieren90Grad
$x = $centerX + $radius * cos($angle);
$y = $centerY + $radius * sin($angle);
$points[] = $x;
$points[] = $y;
}
// Polygone aufziehen(Wird nicht automatisch schließen)
imageopenpolygon($image, $points, $sides, $polygonColor);
// Bilder zum Browser ausgeben
header('Content-Type: image/png');
imagepng($image);
// Ressourcen zerstören
imagedestroy($image);
?>
ImageOpenpolygon () ist ein offenes Polygon, die Start- und Endpunkte sind nicht automatisch angeschlossen. Wenn Sie die Grafiken schließen müssen, verwenden Sie stattdessen ImagePolygon () .
Das Koordinatenarray ist in Ordnung angeordnet und das Format ist [x0, y0, x1, y1, x2, y2, ...] .
Vergessen Sie nicht, die Ressource -Imagedestroy ($ Image) am Ende zu zerstören, andernfalls leckt der Speicher.
Wenn Sie das Bild auf dem Server speichern möchten, z. B. auf https://m66.net/uploads/polygon.png , können Sie dies tun:
imagepng($image, '/path/to/uploads/polygon.png');
Denken Sie daran, sicherzustellen, dass/Pfad/zu/Uploads/ Verzeichnis vorhanden ist und im Voraus Berechtigungen geschrieben hat!