1. ホーム
  2. python

[解決済み] Pythonで16進数からRGB値への変換

2022-10-12 20:29:01

質問

ジェレミーの回答はこちらです。 hex カラーを RGB に、またはその逆に変換する。 私は、プリセットのカラー16進コード (例: #B4FBB8) を変換する python プログラムを得ることができましたが、エンドユーザーの観点からすると、コード & を編集してそこから実行するように人々に依頼することはできません。16進数の値を入力するようにユーザーに促し、そこからRGB値を吐き出させるにはどうしたらよいでしょうか。

私がこれまでに作成したコードは以下のとおりです。

def hex_to_rgb(value):
    value = value.lstrip('#')
    lv = len(value)
    return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))


def rgb_to_hex(rgb):
    return '#%02x%02x%02x' % rgb

hex_to_rgb("#ffffff")              # ==> (255, 255, 255)
hex_to_rgb("#ffffffffffff")        # ==> (65535, 65535, 65535)
rgb_to_hex((255, 255, 255))        # ==> '#ffffff'
rgb_to_hex((65535, 65535, 65535))  # ==> '#ffffffffffff'

print('Please enter your colour hex')

hex == input("")

print('Calculating...')
print(hex_to_rgb(hex()))

行を使って print(hex_to_rgb('#B4FBB8')) 正しいRGB値である(180, 251, 184)を吐き出させることができました。

おそらく超簡単なことでしょう。私はまだPythonの扱いがかなり荒いので。

どのように解決するのですか?

私は、これはあなたが探しているものを行うことを信じています。

h = input('Enter hex: ').lstrip('#')
print('RGB =', tuple(int(h[i:i+2], 16) for i in (0, 2, 4)))

(上記はPython 3で書かれたものです。)

サンプル実行です。

Enter hex: #B4FBB8
RGB = (180, 251, 184)

ファイルへの書き込み

ファイルへの書き込みは、ハンドル fhandle に書式を保持したまま書き込む。

fhandle.write('RGB = {}'.format( tuple(int(h[i:i+2], 16) for i in (0, 2, 4)) ))