imagecolorexact

(PHP 4, PHP 5, PHP 7, PHP 8)

imagecolorexactErmittelt den Index-Wert der angegebenen Farbe

Beschreibung

imagecolorexact(
    GdImage $image,
    int $red,
    int $green,
    int $blue
): int

Gibt den Index der angegebenen Farbe in der Farb-Palette des Bildes zurück.

Wenn das Bild aus einer Datei erzeugt wurde, so werden nur die Farben aufgelöst, die im Bild verwendet werden. Farben, die nur in der Farbpalette enthalten sind, werden nicht aufgelöst.

Parameter-Liste

image

Ein GdImage-Objekt, das von einer der Funktionen zur Bilderzeugung, z. B. imagecreatetruecolor(), zurückgegeben wurde.

red

Wert der Rotkomponente.

green

Wert der Grünkomponente.

blue

Wert der Blaukomponente.

Rückgabewerte

Gibt den Paletten-Index der angegeben Farbe zurück, oder -1, falls die Farbe nicht existiert.

Changelog

Version Beschreibung
8.0.0 image erwartet nun eine GdImage-Instanz; vorher wurde eine gültige gd-Ressource erwartet.

Beispiele

Beispiel #1 Ermittle Farben des GD-Logos

<?php
// Lade ein Bild
$im = imagecreatefrompng('./gdlogo.png');

$colors = Array();
$colors[] = imagecolorexact($im, 255, 0, 0);
$colors[] = imagecolorexact($im, 0, 0, 0);
$colors[] = imagecolorexact($im, 255, 255, 255);
$colors[] = imagecolorexact($im, 100, 255, 52);

print_r($colors);

// Speicher freigeben
imagedestroy($im);
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Array
(
    [0] => 16711680
    [1] => 0
    [2] => 16777215
    [3] => 6618932
)

Siehe auch

  • imagecolorclosest() - Ermittelt den Index der Farbe, die der angegebenen Farbe am nächsten kommt
add a note add a note

User Contributed Notes 3 notes

up
2
jbr at ya-right dot com
18 years ago
A few notes about this function...

This function will only work on images where the palette is 256 colors or less. You also can not use imagetruecolortopalette() to reduce the palette on a true color PNG image that has greater than 256 colors in it's palette, then call this function. If you try to do this imagecolorexact() will report colors not being in the image when they are in the image!

1. works on png(s) 8bit/256 colors or less.
2. works on all gif(s)
3. does not work on any type of jpg/jpeg image.
up
0
samtobia at geemail dot com
12 years ago
A script that changes colors depending on get variable
important to note: I had little success with pngs and getting true red
gifs work much better

<?php
//0 is yellow, 1 is red, 2 is blue
$y = 1 - ceil($_GET["c"]/2);
$r = 1 - floor($_GET["c"]/2);
$b = floor($_GET["c"]/2);

$gd = imagecreatefromgif("example.gif");
imagecolorset($gd, imagecolorexact($gd, 255, 0, 0), $r*255, $y*255, $b*255);
imagecolorset($gd, imagecolorexact($gd, 191, 0, 0), $r*191, $y*191, $b*191);
imagecolorset($gd, imagecolorexact($gd, 128, 0, 0), $r*128, $y*128, $b*128);
imagecolorset($gd, imagecolorexact($gd, 255, 0, 0), $r*64, $y*64, $b*64);

header('Content-Type: image/gif');
imagegif($gd);

?>
up
0
info at educar dot pro dot br
18 years ago
<?php

$src
= "../images/pic.gif";

$red = 9;
$green = 9;
$blue = 4;

$pic0026 = imagecreatefromgif ( $src );

$ind = imagecolorexact ( $pic, $red, $green, $blue );

echo
'<img src="../images/pic.gif" border="0" alt="pic" title="View pic" /><br /><br />';

echo
"RED ( " . $red . " ) GREEN ( " . $green . " ) BLUE ( " . $blue . " )<br />-> Palette Index = " . $ind;

if (
$ind != -1 )
{
echo
"<br />[ The color exists! ]";
}
else
{
echo
"<br />[ The color does not exist! ]";
}

imagedestroy ( $pic );

?>
To Top