달나라 노트

Python Basic : RGBA, ARGB 변환 본문

Python/Python Basic

Python Basic : RGBA, ARGB 변환

CosmosProject 2024. 3. 7. 19:45
728x90
반응형



 

 

 

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

 

 

 

 

- 참고

 

https://www.hexcolortool.com/

 

HTML Color Codes - What's your color

Join to access discussion forums and premium features of the site.

www.hexcolortool.com

 

위 사이트는 RGBA color의 color code 변환을 도와주는 Tool입니다.

 

 

 

 

 

728x90
반응형
Comments