Question: bu php bir renk parlaklık değeri elde etmek mümkün mü?
Ne yapmaya çalışıyorum PHP ile bir görüntüden en "önde gelen görsel" renkler olsun. Ben Yığın taşması tüm geçtiniz ve ben herhangi bir çözüm bulmak mümkün değil ettik.
Şu anda bir görüntünün her pikseli aracılığıyla döngüler görüntüleri tarafından bir renk arama inşa ettik, renkleri depolar, daha sonra veritabanında bu depolar renk farklılıkları ve parlaklık değerini hesaplar.
The problem: sonuçlar ancak onlar renkleri önceden gelen eşleştirilmiş görüntünün görsel doğru değildir, matematiksel olarak doğru. Ben parlaklık karşılaştırma çeşit bu sorunu çözebilir varsayılır.
Fark ettim ki ben sonuçları (bazı durumlarda kadar doğru olmasa da) aslında daha doğru olduğunu, (ilk önce en düşük) artan tarafından sonuçlarını sipariş. Bu renk oluşumu değerleri DESC (yüksek ilk) siparişi verirken çok daha düşük olduğu anlamına gelir.
"Parlaklığı" hesaplamak için, ben kullanıyorum bu-Ben onun kadar güçlü inanmıyorum:
function luminance($pixel){
$pixel = sprintf('%06x',$pixel);
$red = hexdec(substr($pixel,0,2))*0.30;
$green = hexdec(substr($pixel,2,2))*0.59;
$blue = hexdec(substr($pixel,4))*0.11;
return $red+$green+$blue;
}
Here is one scenario that shows the problem: http://twitpic.com/33e23p http://twitpic.com/33e3x0
Ben de renkli mesafe fonksiyonu en benzer renk bulma değilse merak etmeye başlıyorum:
function colorDistance(array $color1, array $color2) {
return sqrt(pow($color1[0] - $color2[0], 2) +
pow($color1[1] - $color2[1], 2) +
pow($color1[2] - $color2[2], 2));
}