LoginSignup
0
1

More than 3 years have passed since last update.

【JavaScript】カラー

Last updated at Posted at 2019-06-01

RGBからHEXに変換

概要

RGBからHEXに変換

施策

var rgb2Hex = function(rgb){

    function toHex(n) {
        n = parseInt(n,10);
        if (isNaN(n)) return "00";
        n = Math.max(0,Math.min(n,255));
        return "0123456789ABCDEF".charAt((n-n%16)/16)
            + "0123456789ABCDEF".charAt(n%16);
    }

    return '#'+toHex(rgb[0])+toHex(rgb[1])+toHex(rgb[2]);

};

RGBからHSVに変換

概要

RGBからHSVに変換

施策

var rgb2hsv = function(rgb) {

    var b, delta, g, h, r, s, v;
    r = Number(rgb[0]), g = Number(rgb[1]), b = Number(rgb[2]);

    var min = Math.min(r, g, b);
    var max = Math.max(r, g, b);
    delta = max - min;
    v = max / 255.0;
    if (max === 0) {
        h = Number.NaN;
        s = 0;
    } else {
        s = delta / max;
        if (r === max) {
            h = (g - b) / delta;
        }
        if (g === max) {
            h = 2 + (b - r) / delta;
        }
        if (b === max) {
            h = 4 + (r - g) / delta;
        }
        h *= 60;
        if (h < 0) {
            h += 360;
        }
    }

    if(isNaN(h)){
        h = 0;
    }

    return [h, s, v];

};

HEXからRGBに変換

概要

HEXからRGBに変換

施策

var hex2rgb = function(hex){
    function hexToR(h) {return parseInt((cutHex(h)).substring(0,2),16)}
    function hexToG(h) {return parseInt((cutHex(h)).substring(2,4),16)}
    function hexToB(h) {return parseInt((cutHex(h)).substring(4,6),16)}
    function cutHex(h) {return (h.charAt(0)=="#") ? h.substring(1,7):h}

    var r = Math.round(hexToR(hex));
    var g = Math.round(hexToG(hex));
    var b = Math.round(hexToB(hex));

    return [r,g,b];
};

HEXからHSVに変換

概要

HEXからHSVに変換

施策

var hex2hsv = function(hex){
    var rgb = hex2rgb(hex);
    var hsv = rgb2hsv(rgb);

    return hsv;
};

HSVからRGBに変換

概要

HSVからRGBに変換

施策

var hsv2rgb = function(hsv) {

    var b, f, g, h, i, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, s, t, v;
    h = hsv[0], s = hsv[1], v = hsv[2];
    v *= 255;
    if (s === 0) {
        r = g = b = v;
    } else {
        if (h === 360) {
            h = 0;
        }
        if (h > 360) {
            h -= 360;
        }
        if (h < 0) {
            h += 360;
        }
        h /= 60;
        i = Math.floor(h);
        f = h - i;
        p = v * (1 - s);
        q = v * (1 - s * f);
        t = v * (1 - s * (1 - f));
        switch (i) {
            case 0:
                ref = [v, t, p], r = ref[0], g = ref[1], b = ref[2];
                break;
            case 1:
                ref1 = [q, v, p], r = ref1[0], g = ref1[1], b = ref1[2];
                break;
            case 2:
                ref2 = [p, v, t], r = ref2[0], g = ref2[1], b = ref2[2];
                break;
            case 3:
                ref3 = [p, q, v], r = ref3[0], g = ref3[1], b = ref3[2];
                break;
            case 4:
                ref4 = [t, p, v], r = ref4[0], g = ref4[1], b = ref4[2];
                break;
            case 5:
                ref5 = [v, p, q], r = ref5[0], g = ref5[1], b = ref5[2];
        }
    }
    r = Math.round(r);
    g = Math.round(g);
    b = Math.round(b);

    return [r, g, b];
};

HSVからHEXに変換

概要

HSVからHEXに変換

施策


var hsv2hex = function(hsv){
    var ths = this;

    var h = hsv[0];
    var s = hsv[1];
    var v = hsv[2];

    var rgb = hsv2rgb([h,s,v]);

    var hex = rgb2Hex([rgb[0],rgb[1],rgb[2]]);

    return hex;
};


hexからcolorrefに変換

概要

hexからcolorrefに変換

施策

var hex2colorref = function(hex){
    var stg = String(hex).replace(/#/g,'');
    var rr = stg.substr(4,2);
    var gg = stg.substr(2,2);
    var bb = stg.substr(0,2);

    var colorref = parseInt(rr+gg+bb,16);

    return colorref;
};

colorrefからhexに変換

概要

colorrefからhexに変換

施策

var colorref2hex = function(colorref){

    var st = '';
    var hex = Number(colorref).toString(16);

    var len = 6 - hex.length;
    for(var i=0; i<len; i++){
        st += '0';
    }

    var stg = st + hex;
    var rr = stg.substr(4,2);
    var gg = stg.substr(2,2);
    var bb = stg.substr(0,2);

    return '#' + rr + gg + bb;
};
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1