Während der PHP -Bildverarbeitung stoßen wir häufig auf Situationen, in denen Farben analysiert werden müssen. Um Farben für Bilder genau zu finden oder zu generieren, bietet PHP Funktionen, die uns helfen, diese Funktionen zu implementieren. Unter ihnen sind ImageColorresolve () , ImageColorexact () und imageColorclosest () drei häufig verwendete Funktionen. Was ist der Unterschied zwischen diesen drei Funktionen und wie Sie die am besten geeigneten auswählen? Wir werden die Unterschiede zwischen diesen Funktionen im Detail analysieren und ihre praktischen Anwendungsszenarien diskutieren.
Die Funktion imageColorresolve () wird verwendet, um eine engste Farbe aus der Palette eines Bildes über einen RGB -Wert zu finden. Wenn das Bild eine Palette verwendet (z. B. ein GIF -Bild oder ein PNG -Bild mit einer Palette), sucht diese Funktion nach der nächsten Farbe in der Palette.
imagecolorresolve($image, $r, $g, $b);
$ Bild : Bildressource, normalerweise ein Bild, das durch die Funktion der ImageCreateFrom*() erstellt wurde.
$ R : Der rote Wert zu finden.
$ G : Der umfangreiche Wert.
$ B : Der blaue Wert zu finden.
$image = imagecreatefrompng('example.png');
$index = imagecolorresolve($image, 255, 0, 0); // Finden Sie die nächste Farbe zu rot
ImageColorresolve () gibt den Farbindex in der Palette zurück, die dem RGB -Wert am nächsten liegt. Wenn nicht gefunden, gibt es -1 zurück.
Mit der Funktion "ImageColorexact () werden Farben gefunden, die genau mit dem angegebenen RGB -Wert übereinstimmen. Wenn in der Bildpalette eine genau passende Farbe vorhanden ist, gibt es den Index dieser Farbe zurück. Wenn die genaue passende Farbe nicht gefunden wird, geben Sie -1 zurück.
imagecolorexact($image, $r, $g, $b);
$ Bild : Bildressource.
$ r , $ g , $ b : angegeben rot, grün und blau Werte.
$image = imagecreatefrompng('example.png');
$index = imagecolorexact($image, 255, 0, 0); // Finden Sie Farben, die genau rot passen
Wenn in der Palette des Bildes eine genau passende Farbe vorhanden ist, gibt ImageColorexact () den Index dieser Farbe zurück. Wenn es keine genau passende Farbe gibt, gibt es -1 zurück.
Die Funktion imageColorclosest () ähnelt dem ImageColorresolve () und wird verwendet, um die Farbe zu finden, die der angegebenen Farbe in der Palette am nächsten liegt. Aber im Gegensatz zu ImageColorresolve () kann ImageColorclosest () andere Farbmodi als die Palette akzeptieren, wie z. B. 24-Bit-Farbbilder.
imagecolorclosest($image, $r, $g, $b);
$ Bild : Bildressource.
$ r , $ g , $ b : angegeben rot, grün und blau Werte.
$image = imagecreatefrompng('example.png');
$index = imagecolorclosest($image, 255, 0, 0); // Finden Sie die nächste Farbe zu rot
ImageColorclosest () gibt den Farbindex zurück, der der angegebenen Farbe am nächsten liegt und für Nicht-Palettenbilder geeignet ist.
Funktionsname | verwenden | Rückgabewert |
---|---|---|
ImageColorresolve () | Finden Sie die Farbpalette, die dem angegebenen RGB -Wert am nächsten liegt | Gibt den Farbindex zurück, falls nicht gefunden, -1 zurückgeben |
ImageColorexact () | Finden Sie Palettenfarben, die genau dem angegebenen RGB -Wert entsprechen | Gibt den Farbindex zurück, falls nicht gefunden, -1 zurückgeben |
ImageColorclosest () | Finden Sie die Farbe, die dem angegebenen RGB-Wert am nächsten liegt, unterstützt Nicht-Palettenbilder (wie echte Farbbilder). | Gibt den Farbindex zurück, falls nicht gefunden, -1 zurückgeben |
Wenn Sie die Farbe finden müssen, die dem angegebenen RGB -Wert im Palettenbild am nächsten liegt, und es egal, ob sie genau übereinstimmt, können Sie imageColorresolve () verwenden. Es ist für GIF, indizierte PNG usw. geeignet. Bilder, die Farbpaletten verwenden.
Wenn Sie nur die Farben in der Palette genau finden möchten und sie nicht verarbeiten möchten, wenn es keine genaue Übereinstimmung gibt, können Sie imageColorexact () verwenden. Diese Funktion eignet sich für Szenen mit hohen Anforderungen an die Farbgenauigkeit, erfordert jedoch, dass das Bild genau übereinstimmende Farben haben muss.
Wenn Sie sich mit Nicht-Palettenbildern (z. B. echte Farbbilder) befassen oder wenn Sie in der Lage sein möchten, die Farbe eines bestimmten RGB-Werts in einer beliebigen Art von Bild zu finden, ist es angemessener, wenn Sie sich im BildColorClosest () unter Verwendung von ImageColorclosest () befinden. Es eignet sich zur Verarbeitung von 24-Bit-Farbbildern und kann die nächste Farbe finden.
Wenn Sie mit Bildern mit einer Palette zu tun haben, sind ImageColorresolve () und ImageColorexact () optionale Funktionen, erstere ist locker und benötigt eine genaue Übereinstimmung.
Bei Nicht-Palettenbildern oder wenn Sie die nächste Farbe finden möchten, ist ImagebildColorclosest () flexibler und anwendbarer.
Durch die Auswahl der am besten geeigneten Funktion basierend auf dem Typ und den Anforderungen Ihres Bildes können Sie Farbprobleme effizienter in der Bildverarbeitung umgehen.