SORU
20 AĞUSTOS 2012, PAZARTESİ


Eğer onaltılık renk olduğunu kontrol etmek için nasıl "black"?

Bir renk Eğer", ve eğer öyleyse, beyaz olarak ayarlayın." çok siyah diye bir renk seçici tarafından seçilen karanlığı değerlendirmek için çalışıyorum Hex değeri ilk karakter bu koparmak için kullanabileceğimi düşündüm. İşe yarıyor, ama bazı meşru "light" rengi çok açık. geçiş.

Kod bu işi var:

        if (lightcolor.substring(0,3) == "#00"|| lightcolor.substring(0,3) == "#010"){
            lightcolor="#FFFFFF";
            color=lightcolor;
        }

Bir renk karanlığa belirli bir düzeyde ötesine gittiğini bilmek hex matematik ile daha verimli bir yolu olmalı? Lightcolor gibi "bazı hex değeri" &;= lt "bazı hex değeri" sonra beyaz.. . set

Kullanım olabilir tinyColor, bunun için ekledim, ama emin için bilmiyorum

Çok teşekkürler!

CEVAP
20 AĞUSTOS 2012, PAZARTESİ


Üç RGB bileşenleri tek tek extact için var, ve sonra standart bir formül algılanan parlaklık içine çıkan RGB değerleri dönüştürmek için kullanın.

Altı karakter bir renk varsayarsak:

var c = c.substring(1);      // strip #
var rgb = parseInt(c, 16);   // convert rrggbb to decimal
var r = (rgb >> 16) & 0xff;  // extract red
var g = (rgb >>  8) & 0xff;  // extract green
var b = (rgb >>  0) & 0xff;  // extract blue

var luma = 0.2126 * r   0.7152 * g   0.0722 * b; // per ITU-R BT.709

if (luma < 40) {
    // pick a different colour
}

tinycolor(c).toRgb() RGB bileşenleri de ayıklamak için kullanabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonah Penna

    Jonah Penna

    11 EYLÜL 2005
  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013