PHP 8.1.2 Released!


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

imagecolorresolve Retorna o índice da cor especificada ou a alternativa mais próxima possível


    resource $image,
    int $red,
    int $green,
    int $blue
): int

Esta função é garantida para retornar um índice de cor para a cor solicitada, ou a cor exata, ou a alternativa mais próxima possível.

Se você criou a imagem a partir de um arquivo, apenas as cores usadas na imagem são resolvidas. Cores presentes apenas na paleta não são resolvidas.

Veja também imagecolorclosest().

add a note add a note

User Contributed Notes 1 note

ceo at l-i-e dot com
20 years ago
Okay, so sometimes it's really IMPORTANT to get the exact color you want, only it's not *IN* the Image, and ImageColorResolve just isn't "close enough".

The following code is a disgustingly gross hack, rather slow, but it does that.

$colorcount = array();
for ($x = 0; $x < $width; $x++){
    for ($y = 0; $y < $height; $y++){
        $colorindex = imagecolorat($jpg, $x, $y);
        if (!isset($colorcount[$colorindex])){
            $colorcount[$colorindex] = 1;

$black = imagecolorexact($jpg, 0, 0, 0);
if ($black == -1){
    $goner = key($colorcount);
    $rgb = imagecolorsforindex($jpg, $goner);
    #error_log("Need black: About to kill $goner ($rgb[red], $rgb[green], $rgb[blue]) which was only used in $colorcount[$goner] pixels", 0);
    imagecolordeallocate($jpg, $goner);
    $black = imagecolorallocate($jpg, 0, 0, 0);
if ($black == -1){
    $black = imagecolorresolve($jpg, 0, 0, 0);
    #error_log("Damn!  STILL couldn't allocate the color!", 0);
To Top