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

search for in the

imagecolorresolvealpha> <imagecolormatch
[edit] Last updated: Fri, 25 May 2012

view this page in

imagecolorresolve

(PHP 4, PHP 5)

imagecolorresolveПолучает идентификатор конкретного цвета или его ближайший аналог

Описание

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

Эта функция обязательно вернет идентификатор цвета для выбранного цвета, либо ближайшую возможную его альтернативу.

Если изображение было создано из файла, то будут распознаны только цвета, используемые в изображении. Цвета, которые используются только в палитре, распознаны не будут.

Список параметров

image

Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor().

red

Значение красного компонента цвета.

green

Значение зеленого компонента цвета.

blue

Значение синего компонента цвета.

Возвращаемые значения

Возвращает цветовой идентификатор.

Примеры

Пример #1 Использование imagecoloresolve() для получения цветов из изображения.

<?php
// загрузить изображение
$im imagecreatefromgif('phplogo.gif');

// получить ближайшие цвета на изображении
$colors = array();
$colors[] = imagecolorresolve($im255255255);
$colors[] = imagecolorresolve($im00200);

// вывод
print_r($colors);

imagedestroy($im);
?>

Результатом выполнения данного примера будет что-то подобное:

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

Смотрите также

  • imagecolorclosest() - Получение индекса цвета ближайшего к заданному



add a note add a note User Contributed Notes imagecolorresolve
tom 20-Apr-2012 04:08
It seems that imagecolorresolve is adding the colors to the palette when it can't find them!
ceo at l-i-e dot com 02-Jan-2002 08:55
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