Aktueller Standort: Startseite> Neueste Artikel> Implementierungslösung zum Anschneiden von Bildinhalten im polygonalen Bereich (Maske)

Implementierungslösung zum Anschneiden von Bildinhalten im polygonalen Bereich (Maske)

M66 2025-05-29

Wie verwendet ich die ImageOpenPolygon -Funktion von PHP, um eine Lösung (Mask) zum Erntebildgehalt in Polygonbereichen zu implementieren?

Einführung

Während der Bildverarbeitung ist die Notwendigkeit, bestimmte Bereiche zu erregen, sehr häufig. Wir können in vielerlei Hinsicht ein Bild zuschneiden. Eine der gängigen Methoden besteht darin, die ImageOpenPolygon -Funktion in PHP zu verwenden, um die Ernte des Polygonbereichs durchzuführen. Durch diese Funktion können wir einen Polygonbereich genau angeben und den Inhalt dieses Bereichs aus dem Bild aufnehmen. Als nächstes werden wir diskutieren, wie die Image OpenPolygon -Funktion verwendet und andere Funktionen kombiniert werden, um den Anbaus Effekt des Bildes zu erreichen.

Grundlegende Ideen

Die Grundidee des Polygongebiets, ist:

  1. Definieren Sie den Polygonbereich : Definiert den Ausschnittbereich, indem jeder Scheitelpunkt eines Polygons angibt.

  2. ImageOpenPolygon -Funktion anwenden : Verwenden Sie die ImageOpenPolygon -Funktion, um dieses Polygon auf dem Bild zu zeichnen.

  3. Pflanzenbilder : Inhalt in Polygonbereichen durch Imagecrop oder andere Anbausmethoden extrahieren.

Hier sind die Schritte zur Implementierung dieser Lösung.

Schritt 1: Laden Sie das Bild

Zunächst müssen wir ein Bild laden, das unter Verwendung von PHPs ImagecreateFromjpeg , ImagecreateFrommpng oder anderen verwandten Funktionen geladen werden kann.

 $image = imagecreatefromjpeg('your_image.jpg');  // Laden Sie Bilddateien

Schritt 2: Definieren Sie die Eckpunkte des Polygons

Vor dem Zuschneiden müssen wir eine Polygonscheitelpunkte definieren, die die Form und Größe des beschnittenen Bereichs bestimmen. Ein Scheitelpunkt sollte ein Array sein, und jedes Element des Arrays ist die Koordinaten eines Scheitelpunkts.

 $vertices = [
    [100, 100],
    [200, 100],
    [200, 200],
    [100, 200]
];

Dieser Code definiert vier Scheitelpunkte eines Rechtecks ​​( 100.100 , 200.100 , 200.200 , 100.200 ), um einen Rechteckbereich darzustellen.

Schritt 3: Erstellen Sie eine transparente Maske

Um die Funktion OpenPolygon zu verwenden, um den Bildinhalt zu erregen, müssen wir zunächst eine transparente Bildmaske mit der gleichen Größe wie das Originalbild erstellen.

 $mask = imagecreatetruecolor(imagesx($image), imagesy($image));
$transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127);  // Erstellen Sie einen transparenten Hintergrund
imagefill($mask, 0, 0, $transparent);

Schritt 4: Zeichnen Sie den polygonalen Bereich

Mit der ImageOpenPolygon -Funktion können wir ein Polygon auf der Maske zeichnen. Hier geben wir den Scheitelpunkt und die Randfarbe des Polygons an.

 $polygonColor = imagecolorallocate($mask, 255, 255, 255);  // Weißer Grenze
imagefilledpolygon($mask, array_merge(...$vertices), count($vertices), $polygonColor);  // Füllpolygone zeichnen

In diesem Schritt verwenden wir die image -fähige Polygonfunktion, um ein weißes Polygon zu zeichnen und ihre Innenseiten zu füllen.

Schritt 5: Ernte das Bild mit einer Maske

Nachdem wir eine Polygonmaske haben, können wir sie zum Anbau auf das Originalbild anwenden. Wir wenden die Maske auf das Bild an, so dass nur der Inhalt innerhalb des Polygonbereichs angezeigt wird.

 imagecopymerge($image, $mask, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

Schritt 6: Ausgabe des verkauften Bildes ausgeben

Schließlich geben Sie das verkaufte Bild aus. Sie können ImageJpeg , ImagePng und andere Funktionen verwenden, um Bilder auszugeben oder zu speichern.

 header('Content-Type: image/jpeg');
imagejpeg($image);  // Ausgabebild
imagedestroy($image);  // Bildressourcen freigeben
imagedestroy($mask);  // Maskenressourcen freigeben

Vollständiger Codebeispiel

 <?php
$image = imagecreatefromjpeg('your_image.jpg');  // Laden Sie Bilddateien

// Definieren Sie Polygonscheitelpunkte
$vertices = [
    [100, 100],
    [200, 100],
    [200, 200],
    [100, 200]
];

// Erstellen Sie eine transparente Maske
$mask = imagecreatetruecolor(imagesx($image), imagesy($image));
$transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127);
imagefill($mask, 0, 0, $transparent);

// Polygone zeichnen
$polygonColor = imagecolorallocate($mask, 255, 255, 255);
imagefilledpolygon($mask, array_merge(...$vertices), count($vertices), $polygonColor);

// Erntebilder mit Maske
imagecopymerge($image, $mask, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

// Ausgabebild
header('Content-Type: image/jpeg');
imagejpeg($image);

imagedestroy($image);
imagedestroy($mask);
?>

Zusammenfassen

In den obigen Schritten können wir die ImageOpenPolygon -Funktion von PHP verwenden, um das Ausschneiden von Polygonregionen zu realisieren. Diese Methode ist sehr flexibel und kann verwendet werden, um den komplexen Schnittanforderungen zu bewältigen, und eignet sich zum Schneiden in verschiedenen Formen. Durch rationales Einstellen der Eckpunkte des Polygons können Sie jeden Teil des Bildes genau extrahieren.