Während der PHP -Bildverarbeitung verwenden wir häufig verschiedene Funktionen, die von der GD -Bibliothek bereitgestellt werden, um Bilder zu lesen, zu manipulieren und zu generieren. Bei der Verarbeitung von Bildern im .gd2 -Format liefert PHP zwei sehr ähnliche Funktionen: ImagecreateFromgd2 () und ImagecreateFromgd2part () . Auf den ersten Blick haben sie ähnliche Namen und scheinen ähnliche Funktionen zu sein, aber tatsächlich gibt es wesentliche Unterschiede in ihrem Zweck und ihrer Leistung.
ImagecreateFromgd2 () ist eine Funktion, mit der die gesamte .gd2 -Datei geladen wird. Die Syntax ist wie folgt:
$im = imagecreatefromgd2('https://m66.net/images/sample.gd2');
Diese Funktion dekodiert die gesamte .gd2 -Datei und lädt sie in den Speicher, um eine Bildressource zu generieren. Diese Methode ist direkt und effektiv, wenn sie mit kleineren Bildern zu tun haben.
Wenn die .gd2 -Datei sehr groß ist, lädt die ImagecreateFromgd2 () das gesamte Bild in den Speicher, was zu einem hohen Speicherverbrauch und einer hohen Ineffizienz führt. Dies scheint in Szenarien sehr verschwenderisch zu sein, in denen nur ein Teil der Bilddaten erforderlich ist.
Um das obige Problem zu lösen, liefert PHP die Funktion der ImagecreateFromgd2Part () , sodass Sie nur einen Teil des Bildbereichs in der Datei .gd2 laden können.
$im = imagecreatefromgd2part('https://m66.net/images/sample.gd2', $srcX, $srcY, $width, $height);
Parameterbeschreibung:
$ srcx und $ srcy : Die Startkoordinaten der Region zu extrahieren.
$ width und $ height : Die Größe des zu extrahierenden Bildbereichs.
Speichereinsparung : Laden Sie nur den erforderlichen Bereich.
Schnellere Antwort : Besonders für Szenen geeignet, in denen Bildmedummen oder lokale Bilder in Webanwendungen auf Bedarf geladen werden.
Geeignet für die große Bildverarbeitung : ImagecreateFromgd2Part () ist eine sicherere Wahl, wenn Sie vor einem hohen Auflösung oder einem großen .GD2 -Bild gegenüberstehen.
Angenommen, Sie haben ein .gd2 -Bild von 10000 x 10000 und möchten nur eine 200x200 -Miniaturansicht erzeugen.
$full = imagecreatefromgd2('https://m66.net/images/large.gd2');
$thumb = imagecreatetruecolor(200, 200);
imagecopyresampled($thumb, $full, 0, 0, 0, 0, 200, 200, 10000, 10000);
Der Speicherdruck ist hoch und die Geschwindigkeit langsam.
$part = imagecreatefromgd2part('https://m66.net/images/large.gd2', 1000, 1000, 500, 500);
$thumb = imagecreatetruecolor(200, 200);
imagecopyresampled($thumb, $part, 0, 0, 0, 0, 200, 200, 500, 500);
Effizienter, besonders geeignet für nur Teilbereiche des Bildes.
Obwohl ImagecreateFromgd2 () und ImagecreateFromgd2Part () .GD2 -Bilder in der tatsächlichen Entwicklung lesen können, sollten Sie nach Ihren Anforderungen wählen. Wenn Sie es mit kleinen oder ganzen Bildern zu tun haben, können Sie weiterhin ImagecreateFromgd2 () verwenden. Wenn Sie jedoch mit großen Bildern konfrontiert sind, Bildclips oder in speicherempfindlichen Umgebungen effizient verarbeiten müssen, ist es zweifellos eine bessere Wahl.
Im Zusammenhang mit der Hochleistungsbildverarbeitung wird empfohlen, ImagecreateFromgd2part () anstelle der traditionellen gesamten Bildlesemethode zur Verbesserung der Effizienz und der Programmstabilität zu verwenden.