imagecolorresolve

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

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

Опис

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

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

Якщо створено зображення з файлу, розпізнаються тільки кольори, які використовуються в зображенні. Кольори, присутні тільки в палітрі, не розпізнаються.

Параметри

image

Об'єкт GdImage, що повертається однією з функцій створення зображення, такою як imagecreatetruecolor().

red

Значення червоного компонента.

green

Значення зеленого компонента.

blue

Значення синього компонента.

Значення, що повертаються

Returns a color index.

Журнал змін

Версія Опис
8.0.0 Тепер image має бути примірником GdImage. Раніше очікувався gd-resource.

Приклади

Приклад #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($im, 255, 255, 255);
$colors[] = imagecolorresolve($im, 0, 0, 200);

// Output
print_r($colors);
?>

Поданий вище приклад виведе щось схоже на:

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

Прогляньте також

add a note

User Contributed Notes 1 note

up
1
ceo at l-i-e dot com
23 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);}
To Top