Python Basic : RGBA, ARGB 변환
RGBA는 Red, Green, Blue, Alpha 총 4개의 요소를 조합하여 색상을 나타내는 방식입니다.
R (Red) -> 빨간색 성분을 나타냄. (0 ~ 255 사이의 숫자를 사용하며 숫자가 커질수록 빨간색 성분이 강해짐.)
G (Green) -> 초록색 성분을 나타냄. (0 ~ 255 사이의 숫자를 사용하며 숫자가 커질수록 초록색 성분이 강해짐.)
B (Blue) -> 파란색 성분을 나타냄. (0 ~ 255 사이의 숫자를 사용하며 숫자가 커질수록 파란색 성분이 강해짐.)
A (Alpha) -> 투명도를 나타냄. (0 ~ 1 사이의 실수를 사용하며 0은 완전한 투명, 1은 완전한 불투명을 의미합니다.)
ARGB는 RGBA를 Hex code로 나타낸 것입니다.
RGBA에 있는 R, G, B, A 각각의 성분값을 16진수로 변경하여 나열한 것입니다.
RGBA = (0, 0, 0, 0)
ARGB = #00000000
RGBA와 ARGB는 각각 위처럼 나타내어집니다.
RGBA는 보통 위처럼 R, G, B, A 성분에 대한 수치를 나열합니다.
ARGB는 RGBA에 있는 각 요소를 16진수로 바꿔서 나열하는데
ARGB는 가장 앞에 #이 붙고 총 8자리의 숫자 또는 문자가 옵니다.
# 뒤의 숫자는 각각 아래와 같은 의미를 가집니다.
가장 처음 두 자리 숫자 = A(Alpha, 투명도)
그 다음 두 자리 숫자 = R(Red, 빨강)
그 다음 두 자리 숫자 = G(Green, 초록)
마지막 두 자리 숫자 = B(Blue, 파랑)
한 가지 주의할 것은 투명도입니다.
RGBA = (0, 0, 0, 0~1)
RGBA에서 마지막 요소인 투명도 A(Alpha)는 0~1 사이의 실수값을 가집니다.
근데 이것을 ARGB Hex code로 변환하면 0~1을 0~255 사이의 숫자로 변환해야 합니다.
즉, RGBA의 A값에서 255를 곱한 후 이것을 정수로 round하여 16진법의 수로 바꾸는 방법이 있죠.
RGBA <-> ARGB 값 간의 변환을 코드로 구현하면 다음과 같습니다.
R = 166
G = 128
B = 255
A = 0.8
# convert RGBA value to ARGB Hexadecimal code
R_hex = hex(R).replace('0x', '')
G_hex = hex(G).replace('0x', '')
B_hex = hex(B).replace('0x', '')
A_hex = hex(int(round(A * 255, 0))).replace('0x', '') # 0~1의 A값을 0~255 사이의 정수로 환산.
print(R_hex)
print(G_hex)
print(B_hex)
print(A_hex)
argb_hex_color_code = '#{a_hex}{r_hex}{g_hex}{b_hex}'.format(
a_hex=str(A_hex).ljust(2, '0'), # A_hex 값이 한 자리 수인 경우를 대비해 ljust 사용하여 왼쪽에 0 붙임.
r_hex=str(R_hex).ljust(2, '0'), # R_hex 값이 한 자리 수인 경우를 대비해 ljust 사용하여 왼쪽에 0 붙임.
g_hex=str(G_hex).ljust(2, '0'), # G_hex 값이 한 자리 수인 경우를 대비해 ljust 사용하여 왼쪽에 0 붙임.
b_hex=str(B_hex).ljust(2, '0') # B_hex 값이 한 자리 수인 경우를 대비해 ljust 사용하여 왼쪽에 0 붙임.
)
print(argb_hex_color_code)
-- Result
#cca680ff
- 참고
위 사이트는 RGBA color의 color code 변환을 도와주는 Tool입니다.