Преобразовать цвет в указанный тип цвета - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть цветовой код как 0xff3a9bda, 0xff73bbf3. Я действительно не знаю об этом типе цвета, поскольку знаю, что это НЕ RGB, aRGB, HSB или HEX .

Поскольку я работаю над веб-приложением, моя проблема в том, что я могу получить код цвета с помощью JavaScript в цветах RGB и HTML для любого цвета, и я хочу преобразовать этот цвет в указанный выше код типа цвета .

Может ли кто-нибудь дать мне идею или солутон для этого?

Ответы [ 2 ]

4 голосов
/ 09 сентября 2011

Вы уверены, что это не RGBA?

0xff3a9bda будет rgba(255,58,155,0.85) (RGBA) или rgba(58,155,218,1) (ARGB)

Вы можете выполнить преобразование следующим образом:

var c = 0xff3a9bda;
var r = (c & (0xff << 24)) >>> 24;
var g = (c & (0xff << 16)) >>> 16;
var b = (c & (0xff << 8)) >>> 8;
var a = (c & 0xff) / 0xff;
var rgba = 'rgba(' + [r,g,b,a].join(',') + ')';

Или вот так:

var c = 0xff3a9bda;
var a = ((c & (0xff << 24)) >>> 24) / 0xff;
var r = (c & (0xff << 16)) >>> 16;
var g = (c & (0xff << 8)) >>> 8;
var b = c & 0xff;
var rgba = 'rgba(' + [r,g,b,a].join(',') + ')';

Попробуйте здесь: http://jsfiddle.net/gX6ds/1/


Преобразовать #RRGGBB в этот формат:

var rgb = 'AABBCC';
var c = 0xff000000 + parseInt(rgb, 16);
alert('0x' + c.toString(16));

Преобразование значений R, G, B в этот формат:

var R = 0xAA, G = 0xBB, B = 0xCC;
var c = 0xff000000 + (R << 16) + (G << 8) + B;
alert('0x' + c.toString(16));
1 голос
/ 09 сентября 2011

Нет необходимости слишком усложнять вопрос.У вас есть 32-битное значение цвета, что почти наверняка означает, что у вас есть 4 цветовых компонента (R, G, B, A) по 8 бит на компонент.Если формат не ARGB, то, вероятно, это RGBA, но это будет решать вам.Это, конечно, достаточно просто сделать методом проб и ошибок.

В любом случае, когда вы знаете, какие биты представляют какие компоненты цвета, все, что вам нужно сделать, это извлечь R, G и B (см. Ответ arnaud576875), а затем объедините их вместе, как #<R><G><B>, чтобы получить код цвета HTML.

Затем вы берете свой компонент A и устанавливаете его как opacity любого элемента, к которому вы хотите применить этот цвет.Как в:

#coloredElem {
    color: #<R><G><B>;
    opacity: <A / 255.0>;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...