Python | HEX16進位與RGB10進位顏色互轉

Python | HEX16進位與RGB10進位顏色互轉

  • 背景知識
  • hex → rgb
    • 例項
  • hex ← rgb

背景知識

hex: E6004D or #E6004
rgb: [230, 0, 77]
先推薦幾個線上轉換工具:
RGB色碼與十六進位顏色碼轉換工具
顏色搜尋

不過當資料比較多的時候,就顯得繁瑣了,需要程式碼幫忙減輕工作量~

hex → rgb

1
2
3
4
5
6
7
8
def Hex_to_RGB(hex):
    r = int(hex[0:2],16)
    g = int(hex[2:4],16)
    b = int(hex[4:6], 16)
#     rgb = str(r)+','+str(g)+','+str(b)
    rgb = [r,g,b]
#     print(rgb)
    return rgb

例項

透過多個hex來轉換到rgb
例如我們要轉換這個

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
colorstr = '''E6004D
FF0000
CC4DF2
CC0000
E6CCCC
E6CCE6
A600CC
A64DCC
FF4DFF
FFA6FF
FFE6FF
FFFFA8
FFFF00
E6E600
E68000
F2A64D
E6A600
E6E64D
FFE6A6
FFE64D
E6CC4D
F2CCA6
80FF00
00A600
4DFF00
CCF24D
A6FF80
A6E64D
A6F200
E6E6E6
cccccc
CCFFCC
000000
A6E6CC
A6A6FF
4D4DFF
CCCCFF
E6E6FF
A6A6E6
00CCF2
80F2E6
00FFA6
A6FFE6
E6F2FF'''

程式碼兩行:

1
2
3
colors=colorstr.split('
')
colorRGBs = list(map(Hex_to_RGB,colors))

結果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[[230, 0, 77],
 [255, 0, 0],
 [204, 77, 242],
 [204, 0, 0],
 [230, 204, 204],
 [230, 204, 230],
 [166, 0, 204],
 [166, 77, 204],
 [255, 77, 255],
 [255, 166, 255],
 [255, 230, 255],
 [255, 255, 168],
 [255, 255, 0],
 [230, 230, 0],
 [230, 128, 0],
 [242, 166, 77],
 [230, 166, 0],
 [230, 230, 77],
 [255, 230, 166],
 [255, 230, 77],
 [230, 204, 77],
 [242, 204, 166],
 [128, 255, 0],
 [0, 166, 0],
 [77, 255, 0],
 [204, 242, 77],
 [166, 255, 128],
 [166, 230, 77],
 [166, 242, 0],
 [230, 230, 230],
 [204, 204, 204],
 [204, 255, 204],
 [0, 0, 0],
 [166, 230, 204],
 [166, 166, 255],
 [77, 77, 255],
 [204, 204, 255],
 [230, 230, 255],
 [166, 166, 230],
 [0, 204, 242],
 [128, 242, 230],
 [0, 255, 166],
 [166, 255, 230],
 [230, 242, 255]]

hex ← rgb

我們這裡定義,如果是給的str型別,例如』255,0,0』這樣,如果是輸入list等型別,同理改下即可
這裡前置詞#有沒有都可

1
2
3
4
5
6
7
8
def RGB_to_Hex(rgb):
    RGB = rgb.split(',')
    color = '#'
    for i in RGB:
        num = int(i)
        color += str(hex(num))[-2:].replace('x', '0').upper()
#     print(color)
    return color

測試如下

1
RGB_to_Hex('255,0,0')
1
#FF0000