Bei der Verwendung der GD-Bibliothek von PHP für die Bildverarbeitung ist ImageOpenPolygon () eine relativ seltene, aber nützliche Funktion, um einen offenen (nicht geplanten) Polygonpfad zu zeichnen. In der komplexen Bildverarbeitung müssen wir jedoch häufig überprüfen, ob dieser Zeichnungsprozess erfolgreich ist. Eine intuitive und effektive Methode besteht darin, zu beurteilen, ob die Zeichnung abgeschlossen ist.
In diesem Artikel wird detailliert eingeführt, wie Farbänderungen verwendet werden, um die von ImageOpenpolygon () gezeichneten Ergebnisse zu erkennen.
Die grundlegende Verwendung der ImageOpenPolygon () -Funktion ist wie folgt:
bool imageopenpolygon(
GdImage $image,
array $points,
int $num_points,
int $color
)
$ bild : Eine von ImageCreatTueColor () oder ähnliche Funktion erstellte Bildressource.
$ Punkte : Ein Array mit Eckpunkten im Format [x0, y0, x1, y1, x2, y2, ...] .
$ num_points : Die Anzahl der Scheitelpunkte.
$ color : Die Farbkennung zum Zeichnen von Polygonlinien.
Normalerweise gibt ImageOpenPolygon () trupp zurück, um eine erfolgreiche Zeichnung anzuzeigen. In praktischen komplexen Anwendungen werden jedoch möglicherweise alle detaillierten Fehler nicht nur basierend auf dem Rückgabewert erfasst, wie z. B.:
Die Bildressource wurde zerstört, aber die Funktion gibt immer noch wahr .
Die angegebene Farbe ist im Hintergrund des Bildes nicht sichtbar.
Daher kann das direkte Erkennen von Farbänderungen an bestimmten Positionen auf dem Bild den Zeichnungseffekt intuitiver bestätigen.
Erstellen Sie zunächst ein Bild mit einem weißen Hintergrund:
<?php
// Erstellen Sie ein leeres Bild
$image = imagecreatetruecolor(200, 200);
// Allokation weißer Hintergrund
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
?>
Definieren Sie die Punkte und Farben eines Polygons:
<?php
// Definieren Sie die Eckpunkte eines Polygons
$points = [
50, 50,
150, 50,
100, 150
];
// Rot zum Zeichnen zuweisen
$red = imagecolorallocate($image, 255, 0, 0);
?>
Vor dem Zeichnen wählen wir einen Punkt in einem Liniensegment aus, der voraussichtlich gezogen wird und seine aktuelle Farbe aufzeichnet:
<?php
// Wählen Sie einen Punkt in der Nähe der Polygonlinie aus
$x = 100;
$y = 50;
// Nehmen Sie die Farbe vor dem Zeichnen auf
$beforeColor = imagecolorat($image, $x, $y);
?>
<?php
// Polygone aufziehen
$result = imageopenpolygon($image, $points, 3, $red);
?>
<?php
// Nehmen Sie die Farbe nach dem Zeichnen auf
$afterColor = imagecolorat($image, $x, $y);
// Überprüfen Sie, ob sich die Farbe ändert
if ($beforeColor !== $afterColor && $result) {
echo "Erfolgreich zeichnen,Farbänderungen。";
} else {
echo "Zeichnen fehlgeschlagen oder Farbe nicht geändert。";
}
?>
Durch den Vergleich von $ beecolor und $ After Color können wir zuverlässig bestimmen, ob der Zeichnungsvorgang tatsächlich auf dem Bild wirksam ist.
<?php
// Ausgabe Bild
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
Wenn Sie das Bild speichern möchten, können Sie es auch mit der folgenden Methode auf Ihrem lokalen oder Server speichern, um es auf https://m66.net/uploads/test.png zu speichern:
<?php
// Speichern Sie das Bild auf dem Server
imagepng($image, '/var/www/m66.net/uploads/test.png');
imagedestroy($image);
?>
Die vor und nach dem Zeichnen ausgewählten Testerpunkte müssen an oder sehr nahe am Rand des Polygons liegen , andernfalls kann sich die Farbe nicht ändern.
ImageOpenpolygon () schließt den Pfad nicht automatisch (d. H. Verbinden Sie den letzten Punkt nicht mit dem ersten Punkt). Wenn ein Schließeffekt erforderlich ist, fügen Sie bitte den Startpunkt als Endpunkt manuell hinzu.
Wenn der Bildhintergrund der Farbe der Zeile ähnelt, sollten Sie die Testerpunkte sorgfältig auswählen, um Fehleinschätzungen zu vermeiden.
Durch Erkennung von Farbänderungen kann nicht nur überprüfen, ob ImageOpenPolygon () erfolgreich ausgeführt wird, sondern auch indirekt die Zeichnungsposition und die Farbkorrektheit überprüfen. Diese Methode eignet sich zur automatisierten Überprüfung in komplexen Bilderzeugung oder Stapelverarbeitungsszenarien, um Ineffizienz und Fehler zu vermeiden, die durch bloße Augeninspektion verursacht werden.
Ich hoffe, dieses Tutorial kann Ihnen helfen, die Zeichen- und Erkennungsfähigkeiten in der PHP GD -Bibliothek besser zu meistern!