imagecolorresolve

(PHP 4, PHP 5)

imagecolorresolveBelirtilen rengin veya en yakın benzerinin indisini döndürür

Açıklama

int imagecolorresolve ( resource $resim , int $kırmızı , int $yeşil , int $mavi )

Bu işlev, belirtilen rengin kendisinin veya en yakın benzerinin indisini döndürür.

Eğer resmi bir dosyadan oluşturmuşsanız sadece resimde kullanılan renkler çözümlenir. Palette bulunan renklerden resimde kullanılmamış olanlar çözümlenmez.

Değiştirgeler

resim

imagecreatetruecolor() gibi bir resim oluşturma işlevinden dönen bir resim verisi.

kırmızı

Rengin kırmızı bileşeninin değeri.

yeşil

Rengin yeşil bileşeninin değeri.

mavi

Rengin mavi bileşeninin değeri.

Dönen Değerler

Bir renk indisi döndürür.

Örnekler

Örnek 1 - Bir resimdeki renkleri öğrenmek için imagecoloresolve() kullanımı

<?php
// Bir resim yükleyelim
$im imagecreatefromgif('http://docs.php.net/images/php.gif');

// Resimden en yakın renkleri alalım
$colors = array();
$colors[] = imagecolorresolve($im2552552550);
$colors[] = imagecolorresolve($im00200127);

// Sonucu çıktılayalım
print_r($colors);

imagedestroy($im);
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

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

Ayrıca Bakınız

add a note add a note

User Contributed Notes 1 note

up
0
ceo at l-i-e dot com
12 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