SORU
11 NİSAN 2011, PAZARTESİ


Hex, RGB ve RGB Hex

Ben sadece HEX ve RGB değerleri dönüştürmek gerekir.

Bunu denedim, ama işe yaramadı.

function RGB2HTML(red, green, blue)
{
    var decColor = red   256 * green   65536 * blue;
    return decColor.toString(16);
}

Örnek :

#0080C0 to (0,128,192)

CEVAP
11 NİSAN 2011, PAZARTESİ


Aşağıdaki dönüşüm hex ve gerekli sıfır doldurma eklemek için RGB yapar:

function componentToHex(c) {
    var hex = c.toString(16);
    return hex.length == 1 ? "0"   hex : hex;
}

function rgbToHex(r, g, b) {
    return "#"   componentToHex(r)   componentToHex(g)   componentToHex(b);
}

alert( rgbToHex(0, 51, 255) ); // #0033ff

Diğer taraftan dönüştürme:

function hexToRgb(hex) {
    var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
    return result ? {
        r: parseInt(result[1], 16),
        g: parseInt(result[2], 16),
        b: parseInt(result[3], 16)
    } : null;
}

alert( hexToRgb("#0033ff").g ); // "51";

Son olarak, @kazablanka'nın anlatıldığı gibi rgbToHex(), alternatif bir sürüm ve @cwolves: yorumlar tarafından cevap önerdi

function rgbToHex(r, g, b) {
    return "#"   ((1 << 24)   (r << 16)   (g << 8)   b).toString(16).slice(1);
}

Aralık 2012 Güncelleştirme 3

Burada da kestirme bir onaltılık üçüz gibi ayrıştırır hexToRgb() sürümü "#03F":

function hexToRgb(hex) {
    // Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
    var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
    hex = hex.replace(shorthandRegex, function(m, r, g, b) {
        return r   r   g   g   b   b;
    });

    var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
    return result ? {
        r: parseInt(result[1], 16),
        g: parseInt(result[2], 16),
        b: parseInt(result[3], 16)
    } : null;
}

alert( hexToRgb("#0033ff").g ); // "51";
alert( hexToRgb("#03f").g ); // "51";

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007

İLGİLİ SORU / CEVAPLAR