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 |