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

  • Britec09

    Britec09

    4 Mart 2009
  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • Crossover

    Crossover

    18 HAZİRAN 2007