Xeebi

home categories feeds

実は Konsole は true color に対応している

問題

以前,ANSI escape sequence で色付けをして,半角スペースを並べて terminal 上で画像を表示するスクリプトを書いた. これをベースに作った,terminal 上で動く tumblr の見るだけクライアントは未完成ながら結構気に入って使っている. このとき256色にどう落としこむかというのは,画素の少なさとともにひとつの問題になり(なお後者については K-means とか使ったりしてみたりはした), まあいいかってことで結局色空間上の区画の端っこに揃えることにした.できればもっと綺麗に色を表示したい.

解決

実は Konsole はじめ幾つかの terminal emulator は true color に対応している.リンク上を見ながら簡単に試してみよう.

#!/usr/bin/env python3

SEQ = '\033[{}m\033[0m'
color_format = "48;2;{};{};{}"

def colorscheck():
    for r in range(256):
        for g in range(256):
            color = color_format.format(r,g,120)
            color_seq = SEQ.format(color)
            print(color_seq.format(" "), end='')
        print('')

if __name__ == "__main__":
    colorscheck()

結果

img

他の terminal については以下の gist にまとまっている.

これで terminal での画像表示が捗りますね!!