Bei der Verarbeitung von Bildern mithilfe der GD -Bibliothek von PHP sind ImageColorresolve () und ImageColoralClocate () zwei häufig auftretende Funktionen. Obwohl sie alle mit Farbe zusammenhängen, variieren ihre tatsächlichen Verwendungen und Effekte. Wenn wir den Unterschied zwischen ihnen verstehen, können wir während des Entwicklungsprozesses geeignetere Methoden auswählen und die Effizienz und Qualität der Bildverarbeitung verbessern.
ImageColOralCode () wird verwendet , um einem Bild eine neue Farbe zuzuweisen . Einfach ausgedrückt wird die Palette des Bildes eine Farbe hinzufügen und die Kennung der Farbe zurückgeben.
Wenn das Bild palettenbasiert ist (z. B. 8-Bit-PNG oder GIF), wird jedes Mal, wenn eine neue Farbe zugewiesen wird, der inneren Palette ein Datensatz hinzugefügt, bis die Maximalkapazität der Palette erreicht ist (normalerweise 256 Farben). Wenn die Palette voll ist, scheitert ImageColOralCode () und gibt falsch zurück.
Beispielcode:
<?php
$image = imagecreate(100, 100); // Erstellen a 100x100 Leere Bilder
$red = imagecolorallocate($image, 255, 0, 0); // Rot zuweisen
imagefill($image, 0, 0, $red); // Füllen Sie den Hintergrund mit Rot aus
imagepng($image, 'https://m66.net/upload/red.png');
imagedestroy($image);
?>
Im obigen Code sagen wir PHP ausdrücklich, dass wir ein brandneues Rot benötigen, das der Palette zugeordnet ist, und geben die entsprechende Farb -ID zurück.
ImageColorresolve () wird verwendet , um eine vorhandene Farbe zu finden, die dem angegebenen RGB -Wert am nächsten liegt . Wenn es existiert, gibt es die vorhandene Farb -ID zurück. Wenn es keine Schließung gibt und Platz für die Palette ist, wird eine neue Farbe zugewiesen.
Das heißt, es priorisiert die Verwendung vorhandener Farben und vermeidet unnötige Zugabe neuer Farben, sodass effizienter begrenzte Palettenressourcen verwendet werden können.
Beispielcode:
<?php
$image = imagecreate(100, 100); // Erstellen a 100x100 Leere Bilder
$red = imagecolorresolve($image, 254, 1, 1); // Finden Sie eine Farbe in der Nähe rot
imagefill($image, 0, 0, $red); // Füllen Sie den Hintergrund mit den gefundenen Farben aus
imagepng($image, 'https://m66.net/upload/resolved_red.png');
imagedestroy($image);
?>
Beachten Sie, dass ImageColorresolve () nahe an der angegebenen Farbe und nicht der präzisen Zuordnung erfordert.
Die Auswahl von ImageColoralClocate () oder imageColorresolve () hängt von Ihren Bedürfnissen ab:
Wenn Sie eine sichere und genaue Farbe benötigen, die das Wachstum der Farbpalette verträgt, wählen Sie ImagebildColoralCode () .
Wenn Sie Palette -Ressourcen sparen und vorhandene Farben so weit wie möglich wiederverwenden möchten, wählen Sie imageColorresolve () aus.
Wenn Sie wissen, dass die Anzahl der Farben in einem Bild nicht zu groß ist, können Sie im Allgemeinen direkteColorallocation () verwenden. Wenn das Bild reich an Farbe ist oder Sie an Bildern arbeiten, die Grenzen für die Anzahl der Farben wie GIFs haben, wird empfohlen, zuerst imageColorresolve () zu verwenden.
Funktionspunkte | ImageColoralLaCate () | ImageColorresolve () |
---|---|---|
Zweck | Zuweisen Sie eine neue Farbe | Verwenden Sie vorhandene enge Farben und weisen Sie sie gegebenenfalls zu |
Palettendruck | Groß (kann Überlauf verursachen) | Klein (so weit wie möglich wiederverwendbar) |
Szenarien verwenden | Präzise Farbsteuerungsszenen | Szenen, die Farbressourcen speichern |
In der tatsächlichen Entwicklung kann das Beherrschen des Unterschieds zwischen diesen beiden Funktionen Ihr Bildverarbeitungsprogramm sowohl effizient als auch stabil machen!