In PHP bietet die GD -Bibliothek leistungsstarke Bildverarbeitungsfunktionen, mit denen verschiedene Grafiken, einschließlich Polygone, zeichnen können. Wenn Sie einen Verifizierungscode mit einem zufälligen Polygonmuster generieren möchten, um die Anti-Verringerungsfähigkeit des Verifizierungscodes zu verbessern, ist die ImageOpenPolygon -Funktion sehr nützlich.
In diesem Artikel wird detailliert vorgestellt, wie man Polygone unter Verwendung von ImageOpenPolygon und GD -Bibliothek zeichnet und ein einfaches Verifizierungscode -Bild generiert.
Php 7.0 und höher
GD -Erweiterungen wurden installiert und aktiviert (Sie können überprüfen, ob sie über phpinfo () aktiviert sind).
ImageOpenPolygon ist eine der Funktionen der GD -Bibliothek, um offene Polygone auf einem Bild zu zeichnen (d. H. Die Linien sind zu Beginn und am Ende nicht angeschlossen). Im Gegensatz zu Imagepolygon (Zeichnen geschlossener Polygone) eignet sich imageOpenpolygon besser für Szenen, in denen offene Kurven benötigt werden, z. B. Interferenzlinien von Verifizierungscodes.
Die Funktionsdefinition lautet wie folgt:
bool imageopenpolygon(GdImage $image, array $points, int $num_points, int $color)
$ Image : Die zu zeichnere Bildressource.
$ Punkte : Ein Array mit Punktkoordinaten [X0, Y0, X1, Y1, X2, Y2, ...] .
$ num_points : Die Anzahl der Scheitelpunkte.
$ Farbe : Linienfarbe.
Hier ist ein vollständiges Beispiel dafür, wie ein Verifizierungscode -Bild mit zufälligen Polygonen generiert wird:
<?php
// Setzen Sie den Inhaltstyp auf Bild
header('Content-Type: image/png');
// Erstellen Sie eine Leinwand
$width = 200;
$height = 70;
$image = imagecreatetruecolor($width, $height);
// Farbeinstellungen
$backgroundColor = imagecolorallocate($image, 255, 255, 255); // Weißer Hintergrund
$textColor = imagecolorallocate($image, 0, 0, 0); // Schwarze Schriftart
$polygonColor = imagecolorallocate($image, 100, 100, 255); // Blaues Polygon
// Füllen Sie den Hintergrund
imagefill($image, 0, 0, $backgroundColor);
// Generieren Sie zufällige Verifizierungscodetext
$characters = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
$captchaText = '';
for ($i = 0; $i < 5; $i++) {
$captchaText .= $characters[rand(0, strlen($characters) - 1)];
}
// Verifikationscode -Text schreiben
$fontSize = 5; // Eingebaute Schriftgröße
$x = ($width - imagefontwidth($fontSize) * strlen($captchaText)) / 2;
$y = ($height - imagefontheight($fontSize)) / 2;
imagestring($image, $fontSize, $x, $y, $captchaText, $textColor);
// Zeichnen Sie zufällig mehrere offene Polygone
for ($i = 0; $i < 3; $i++) {
$points = [];
$numPoints = rand(3, 6); // Dreieck zu Sechseck
for ($j = 0; $j < $numPoints; $j++) {
$points[] = rand(0, $width);
$points[] = rand(0, $height);
}
imageopenpolygon($image, $points, $numPoints, $polygonColor);
}
// Ausgabebild
imagepng($image);
// Ressourcen zerstören
imagedestroy($image);
?>
Wenn Sie die oben ausgeführte PHP -Datei oben ausgeführt haben, sehen Sie einen Verifizierungscode mit einem weißen Hintergrund, einem Satz zufälliger alphanumerischer Zeichen in der Mitte und einer Reihe von zufällig gezeichneten blauen Polygonen um sie herum, was die Störung des Bildes erhöht.
GD -Erweiterungen müssen aktiviert sein . Wenn nicht aktiviert, kann es aktiviert werden, indem Befehle wie papt-installieren Sie PHP-GD oder das Bearbeiten von Php.ini installieren.
Verbesserte Komplexität des Verifizierungscodes : Der Verifizierungscode kann komplexer gemacht werden, indem die Anzahl der Polygone erhöht, die Farbe und die grafische Größe geändert und die automatische Erkennung verhindern.
Sichere Ausgabe : Sie haben keine HTML -Ausgabe, bevor Sie das Bild erstellen, andernfalls wird die Bilddatei beschädigt.
Wenn Sie den Verifizierungscode personalisierter gestalten möchten, z. B. gekrümmte Text, Rotationseffekte und Hintergrundgeräusche, können Sie fortgeschrittenere Bibliotheken wie Captcha Builder für die Entwicklung für die Entwicklung verwenden.