downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

imagecolorresolvealpha> <imagecolormatch
[edit] Last updated: Fri, 17 May 2013

view this page in

imagecolorresolve

(PHP 4, PHP 5)

imagecolorresolveGet the index of the specified color or its closest possible alternative

Descrizione

int imagecolorresolve ( resource $image , int $red , int $green , int $blue )

This function is guaranteed to return a color index for a requested color, either the exact color or the closest possible alternative.

Se l'immagine è stata creata da un file, solo i colori usati nell'immagine sono risolti. I colori presenti solo nella palette non sono risolti.

Elenco dei parametri

image

Una risorsa immagine, restituita da una delle funzioni di creazione immagine, come imagecreatetruecolor().

red

Valore della componente rossa.

green

Valore della componente verde.

blue

Valore della componente blu.

Valori restituiti

Returns a color index.

Esempi

Example #1 Using imagecoloresolve() to get colors from an image

<?php
// Load an image
$im imagecreatefromgif('phplogo.gif');

// Get closest colors from the image
$colors = array();
$colors[] = imagecolorresolve($im255255255);
$colors[] = imagecolorresolve($im00200);

// Output
print_r($colors);

imagedestroy($im);
?>

Il precedente esempio visualizzerà qualcosa simile a:

Array
(
    [0] => 89
    [1] => 85
)

Vedere anche:



add a note add a note User Contributed Notes imagecolorresolve - [2 notes]
up
0
tom
1 year ago
It seems that imagecolorresolve is adding the colors to the palette when it can't find them!
up
0
ceo at l-i-e dot com
11 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;
        }
        else{
            $colorcount[$colorindex]++;
        }
    }
}
asort($colorcount);
reset($colorcount);

$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);
    unset($colorcount[$goner]);
    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);
}

 
show source | credits | stats | sitemap | contact | advertising | mirror sites