2017-08-20 48 views
-1

我從#RRGGBB十六進制格式(#D3D3D3是淺灰色)中獲得用戶顏色,我想用它爲某些輸出着色。我想我寫print("some text", color="#0000FF")並獲得藍色的輸出。有沒有可能(理想情況下沒有第三方軟件)?給出的顏色Python輸出#RRGGBB十六進制值

+1

可能的重複[如何在Python中打印彩色輸出到終端?](https://stackoverflow.com/questions/37340049/how-do-i-print-colored-output-to-the-terminal -in-python) –

+0

這要看。某些Unix/Linux終端仿真程序支持Truecolor ansi轉義符。你在哪裏需要這些? –

+0

@AnttiHaapala我正在研究獲取照片並將其打印爲ASCII藝術的程序。使用Ubuntu。 –

回答

0

您可以使用以下轉義序列的真彩色感知終端上:

  • ESC[ … 38;2;<r>;<g>;<b> … m選擇RGB前景色
  • ESC[ … 48;2;<r>;<g>;<b> … m選擇RGB背景顏色

因此,你可以寫功能:

RESET = '\033[0m' 
def get_color_escape(r, g, b, background=False): 
    return '\033[{};2;{};{};{}m'.format(48 if background else 38, r, g, b) 

,並使用此類似:通過使用諸如和背景和前景顏色

print(get_color_escape(255, 128, 0) 
     + get_color_escape(80, 30, 60, True) 
     + 'Fancy colors!' 
     + RESET) 

可以得到翻倍的水平或垂直分辨率。

+0

可能是我的工作,但它看起來就像我沒有_true-color aware terminal_(LXTerminal)一樣。將在其他地方嘗試,然後可能會接受答案。順便說一句。這是您的終端的好測試:https://askubuntu.com/a/790991 –