In PHP ist die Bildverarbeitung eine sehr praktische und leistungsstarke Funktion. Durch rationale Verwendung von Funktionen in der GD -Bibliothek wie ImageOpenpolygon () und imageCopymerge () können komplexe Bildsyntheseeffekte leicht erreicht werden. In diesem Artikel wird die Verwendung dieser beiden Funktionen Schritt für Schritt eingeführt und deren praktische Anwendung durch ein einfaches Beispiel demonstriert.
ImageOpenPolygon () ist eine Funktion, mit der offene Polygone (d. H. Polygonlinien, die nicht mit dem Ende verbunden sind) auf einem Bild verwendet werden. Die grundlegende Syntax ist wie folgt:
bool imageopenpolygon ( GdImage $image , array $points , int $num_points , int $color )
$ Bild : Bildressource.
$ Punkte : Ein Array mit Koordinatenpunkten wie [x1, y1, x2, y2, ...] .
$ num_points : Die Anzahl der Punkte.
$ Farbe : Die Farbe der Linie wird gezeichnet.
Hinweis: Im Gegensatz zu ImagePolygon () verbindet ImageOpenPolygon () die Start- und Endpunkte nicht automatisch.
ImageCopyMerge () wird verwendet, um Teile eines Bildes auf ein anderes Bild zu verschmelzen und Transparenz anzugeben. Die grundlegende Syntax ist wie folgt:
bool imagecopymerge(
GdImage $dst_image,
GdImage $src_image,
int $dst_x, int $dst_y,
int $src_x, int $src_y,
int $src_width, int $src_height,
int $pct
)
$ dst_image : Zielbildressource.
$ src_image : Quellbildressource.
$ dst_x, $ dst_y : Die Koordinaten des Startpunkts, an dem das Quellbild auf dem Zielbild platziert ist.
$ src_x, $ src_y : Der Ausgangspunkt zum Kopieren des Quellbildes.
$ src_width, $ src_height : Die Breite und Höhe der Kopie.
$ pct : verschmolze Transparenz (0 = vollständig transparent, 100 = vollständig undurchsichtig).
Hier ist ein vollständiges Beispiel: Wir werden ImageOpenpolygon () verwenden, um ein einfaches Diagramm zu zeichnen und es mit ImageCopymerge () auf einem Hintergrundbild zu kombinieren:
<?php
// Erstellen Sie ein Hintergrundbild
$background = imagecreatetruecolor(400, 300);
$white = imagecolorallocate($background, 255, 255, 255);
imagefill($background, 0, 0, $white);
// Erstellen Sie eine Vordergrundkarte(Polygonale Grafik)
$polygon = imagecreatetruecolor(200, 200);
$transparent = imagecolorallocatealpha($polygon, 0, 0, 0, 127);
imagefill($polygon, 0, 0, $transparent);
imagesavealpha($polygon, true);
// Definieren Sie den Punkt eines Polygons
$points = [
50, 50,
150, 50,
150, 150,
50, 150
];
// Farben zuweisen
$red = imagecolorallocate($polygon, 255, 0, 0);
// Polygone aufziehen
imageopenpolygon($polygon, $points, count($points) / 2, $red);
// Bilder synthetisieren
imagecopymerge($background, $polygon, 100, 50, 0, 0, 200, 200, 70);
// Ausgabe Bild zum Browser
header('Content-Type: image/png');
imagepng($background);
// Ressourcen frei machen
imagedestroy($background);
imagedestroy($polygon);
?>
In diesem Beispiel erstellen wir zunächst ein Bild mit einem weißen Hintergrund, erstellen dann eine Vordergrundkarte mit transparentem Hintergrund, verwenden ImageOpenpolygon (), um einen rot offenen Quadrat -Umriss auf der Vordergrundkarte zu zeichnen und schließlich diese Vordergrundkarte mit 70% Transparenz durch ImageCopyMerge () zu verschmelzen.
Wenn Sie das Endergebnis als Datei speichern möchten, anstatt an den Browser auszugeben, ersetzen Sie einfach ImagePng ($ Hintergrund). mit:
imagepng($background, '/path/to/your/folder/merged_image.png');
Natürlich können hier /Pfad/zu/Ihren/Ordner/ Pfad durch Ihre eigene Serveradresse ersetzt werden, wie z. B.:
imagepng($background, 'https://m66.net/uploads/merged_image.png');
Durch die Kombination von ImageOpenpolygon () und ImageCopyMerge () können wir leicht verschiedene offene Grafiken zeichnen und sie flexibel auf ein beliebiges Hintergrundbild mischen, um eine umfassende visuelle Effekte zu erzielen. Diese Technologie kann in der Avatar -Synthese, der Wasserzeichenproduktion, der dynamischen Grafikverarbeitung und anderen Szenarien häufig eingesetzt werden.