Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Farbänderungen, um festzustellen, ob der Zeichnungsprozess imageOpenpolygon () ausgeführt wird

Verwenden Sie Farbänderungen, um festzustellen, ob der Zeichnungsprozess imageOpenpolygon () ausgeführt wird

M66 2025-05-17

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.

Was ist ImageOpenpolygon () ?

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.

Warum müssen wir beurteilen, ob die Zeichnung durch Farbänderungen erfolgreich ist?

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.

Beispiel für Testprozesse

Schritt 1: Erstellen Sie ein grundlegendes Bild und füllen Sie den Hintergrund aus

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

Schritt 2: Bereiten Sie sich auf das Zeichnen von Parametern vor

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

Schritt 3: Nehmen Sie die Farbe vor dem Zeichnen an einem bestimmten Punkt auf

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

Schritt 4: Rufen Sie ImageOpenpolygon () auf, um Polygon zu zeichnen

 <?php
// Polygone aufziehen
$result = imageopenpolygon($image, $points, 3, $red);
?>

Schritt 5: Nehmen Sie die Farbe des Punktes nach dem Zeichnen auf und vergleichen Sie ihn

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

Schritt 6 (optional): Ausgabe des Bildes, um Ergebnisse anzuzeigen

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

Dinge zu beachten

  • 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.

Zusammenfassen

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!