PHP 8.4.0 RC4 available for testing

imagecolorresolve

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

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

Açıklama

imagecolorresolve(
    GdImage $görüntü,
    int $kırmızı,
    int $yeşil,
    int $mavi
): int

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

Görüntüyü bir dosyadan oluşturursanız sadece Görüntüde kullanılan renkler çözümlenir. Renklerin sadece bir palette bulunması durumunda bu çözümleme yapılmaz.

Bağımsız Değişkenler

görüntü

imagecreatetruecolor() gibi bir görüntü oluşturma işlevinden dönen bir GdImage nesnesi.

kırmızı

Kırmızı bileşenin değeri.

yeşil

Yeşil bileşenin değeri.

mavi

Mavi bileşenin değeri.

Dönen Değerler

Bir renk indisi döndürür.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 görüntü bağımsız değişkeninde artık bir GdImage nesnesi aktarmak gerekiyor; evvelce resource türünde geçerli bir gd değeri gerekirdi.

Örnekler

Örnek 1 - Bir görüntüdeki renkleri öğrenmek için imagecoloresolve() kullanımı

<?php
// Bir görüntü yükleyelim
$im = imagecreatefromgif('http://docs.php.net/images/php.gif');

// Görüntüden en yakın renkleri alalım
$colors = array();
$colors[] = imagecolorresolve($im, 255, 255, 255, 0);
$colors[] = imagecolorresolve($im, 0, 0, 200, 127);

// 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

User Contributed Notes 1 note

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