каков максимальный диапазон цветов в этом формате: #AABBCC? - PullRequest
0 голосов
/ 22 октября 2010

Как я могу преобразовать цвета из (N, N, N) формата в #AABBCC (и #AAABBBCCC)?

спасибо

Ответы [ 8 ]

2 голосов
/ 22 октября 2010

#FFFFFF, так просто

каждый символ имеет диапазон 0..F. Это 0..15. Таким образом, два символа 0..(16*16-1) -> 0-255

Для преобразования между форматами просто подумайте:

#AABBCC - это три значения AA BB CC. Каждое отдельное значение представляет канал (красный, зеленый, синий), который может варьироваться от 0 до 255 или от 0 до FF или от 0.0 до 1.0

если у вас есть например # 123456, вы можете сделать

12 -> 1*16 + 2 = .. (result in range 0-255)
34 -> 3*16 + 4 = ..
56 -> 5*16 + 6 = ..

в общем случае шестнадцатеричное число из двух цифр, составленное из XY, можно преобразовать в десятичное значение, умножив X на 16 и добавив Y, заботясь о преобразовании цифр больше 9 (A, B, C , D, E, F) своим аналогам (10, 11, 12, 13, 14, 15). Так, например, AC будет A*16 + C = 10*16 + 12.

(Чтобы быть точным, шестнадцатеричное число n преобразуется путем умножения i-й цифры справа на 16 ^ i и сложения всех их вместе)

1 голос
/ 22 октября 2010

с 00 до FF.Это шестнадцатеричное от 0 до 255.

0 голосов
/ 23 октября 2010

Минимальное и максимальное значения для цветов в формате #AABBCC: # 000000 ... # FFFFFF или 0 ... 16777215 в десятичном виде.Каждый отдельный компонент цвета находится в диапазоне от # 00 .. # FF, что составляет 0,525 в десятичном виде и требует 8-битного или 1-байтового хранения.Для #AAABBBCCC диапазон компонентов составляет # 000- # FFF или 0..4095 каждый, и им требуется 12 бит или 1½ байта памяти.

Не уверен, что диапазон значений для N в (N, N, N), но если это 0..1, то эти две функции преобразуют из него в значения цвета 8-битного компонента #AABBCC или 12-битного компонента #AAABBBCCC (без округления).Обратите внимание, что выходные данные каждой функции представляют собой строку со значением, показанным после каждого оператора печати ниже.ITOH8 и ITOH12 - это таблицы постоянного поиска, используемые соответствующей функцией.

ITOH8 = [('%02X' % i) for i in range(0x100)]

rgbconv8 = lambda c: ''.join( ['#'] + [ITOH8[int(v*0xFF)] for v in c] )

print rgbconv8((0., 1., 0.)) #00FF00
print rgbconv8((.2, .6, .75)) #3399BF

ITOH12 = [('%03X' % i) for i in range(0x1000)]

rgbconv12 = lambda c: ''.join( ['#'] + [ITOH12[int(v*0xFFF)] for v in c] )

print rgbconv12((0., 1., 0.)) #000FFF000
print rgbconv12((.2, .6, .75)) #333999BFF
0 голосов
/ 22 октября 2010

Используете Python?Попробуйте это:

c = (0., 1., 0.)
rgb = '#%02X%02X%02X' % (c[0] * 255, c[1] * 255, c[2] * 255)
0 голосов
/ 22 октября 2010

Это шестнадцатеричное (основание 16) обозначение, где каждая цифра идет от 0 до 15 (F).

Диапазон от 0 до FF в шестнадцатеричном формате от 0 до 255. В десятичном виде.

Если вы хотите конвертировать из одного в другое, существует множество сайтов, которые сделают это для вас - например, этот .

0 голосов
/ 22 октября 2010

Как уже говорили другие, 00 - FF.

Вот краткий обзор цветов HTML в шестнадцатеричной записи:
http://www.w3schools.com/Html/html_colors.asp

Вы можете узнать, какпреобразовать из шестнадцатеричного в десятичное здесь:
http://en.wikipedia.org/wiki/Hexadecimal

И для Python:
Преобразование шестнадцатеричного цвета в RGB и наоборот

Или поискдля " конвертировать шестнадцатеричный десятичный "

0 голосов
/ 22 октября 2010

Это шестнадцатеричные представления 16-битных чисел для каналов Red Green и Blue. Таким образом, от 0 до 255 для каждого канала. FF (hex) равен 255 десятичному.

0 голосов
/ 22 октября 2010
 RRGGBB    RRGGBB
#000000 - #FFFFFF
 Black  -  White

RR = 00 - FF or 0 - 255
GG = 00 - FF or 0 - 255
BB = 00 - FF or 0 - 255
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...