リンク
資料
- Sixel Graphics復活への動き - Togetterまとめ
- Sixel グラフィックス - VT100.net: VT330/VT340 プログラマーリファレンスマニュアル
- All About SIXELs
- Displaying Sixel Image Files
ハウツーなど
- OS X Mavericksにmltermとlibsixelをインストールして端末で画像を表示する - Keep It Simple, Stupid
- Vimで画像を見る(DRCSのSIXEL拡張の話) - Qiita
- Presentation on your terminal
対応端末
- xterm - Terminal emulator for the X Window System
- http://invisible-island.net/xterm/
- 要
-ti 340
オプション
- mlterm - multilingual terminal emulator on X11
- http://mlterm.sourceforge.net/
- X、Windows、フレームバッファー用
- RLogin
- yaft - yet another framebuffer terminal
- android port of yaft (yet another framebuffer terminal)
- Tanasinn - 三 ┏( ^o^)┛ < Terminal emulator extension for Firefox / Thunderbird / SeaMonkey
- etc.
対応ソフトウェア
- 端末エミュレータ - Sixel Graphicsを活用したアプリケーションの御紹介 - Qiita
ライブラリ、モジュール
- libsixel - A lightweight, fast implementation of DEC SIXEL graphics codec
- http://saitoha.github.io/libsixel/
- https://github.com/saitoha/libsixel
- README には関連/対応ソフトウェアの紹介も多数掲載
- C
- PySixel - View full-pixel color graphics on SIXEL-supported terminals
- go-sixel
- https://github.com/mattn/go-sixel
- Go (golang)
ユーティリティなど
- sdump - sixel image dumper
- recterm - read key sequence and convert shell output into animation gif directly
- https://github.com/uobikiemukot/recterm
- 端末上の操作、表示をアニメーション GIF 画像化
- Convert a ttyrec record into a gif animation directly
- https://github.com/saitoha/seq2gif
- 端末上の操作、表示をアニメーション GIF 画像化
- Sixel版 Tw - Twitter client on Ruby
- Sixel版 mikutterm - 端末でmikutterを使えるプラグイン
- qrc - QR code generator for text terminals (ASCII art, Sixel)
- sixelslide - freestanding slideviewer using sixel graphics
- Ghostscript
- http://www.ghostscript.com/
- Sixel 対応プリンターである LN03 / LN50 / LA75 用のドライバー
ln03
を利用
- gnuplot
- Netpbm
- http://netpbm.sourceforge.net/
ppmtosixel
(1) コマンド
- kmiya’s sixel
パッケージ
- Homebrew tap
- https://github.com/aki017/homebrew-sixel
- Sixel 関連のソフトウェアを多数収録
- Mac OS X 用
シェルで Sixel してみる
bash, zsh を前提とします。
端末が Sixel 対応しているかどうかを調べる
端末に DA1 (Primary Device Attributes) を問い合わせ、
Sixel 対応を示す属性値 4
が含まれていることを確認します。
mlterm 3.3.8 上での実行例:
$ stty -echo; echo -en '\e[c'; read -d c da1 <&1; stty echo; echo -E "${da1#*\?}"
1;2;4;7
- DA1 の問い合わせ
- 「ESC +
[c
」を端末に出力する。 - 上記例では応答が画面にエコーバックされないように
stty -echo
で抑制している。
- 「ESC +
- DA1 の取得
- 端末から属性値を入力する。
- 「ESC +
[?
+ 属性値 [+;
+ 属性値 …] +c
」という形式。
参考:
- DA1 - Primary Device Attributes - VT100.net VT510 Video Terminal Programmer Information
Sixel 文字列を出力して画像を描画する
$ echo -en '\ePq#0;2;0;0;0#1;2;100;100;0#2;2;0;100;0#1~~@@vv@@~~@@~~$#2??}}GG}}??}}??-#1!14@\e\\'
- Sixel 文字列の開始
- 「ESC +
Pq
」を端末に出力する。
- 「ESC +
- 色番号に色を割り当てる
- 「
#
+ 色番号 +;2;
+ 赤明度 +;
+ 緑明度 +;
+ 青明度」を端末に出力する。 - 色番号は 0 〜 255 の範囲を指定する。
;2;
部分は色を RGB (赤、緑、青) で指定することを示す。- 各色の明度は
0
〜100
の値 (%) を指定する。
- 「
- ビットマップデータ (Sixel) の描画色の指定
- 「
#
+ 色番号」を端末に出力する。 - 項番 2 で割り当てた色番号を指定する。
- 「
- ビットマップデータ (Sixel) の出力
- 「
?
」から「~
」の範囲の ASCII 文字 (ASCII コード 0x3F 〜 0x7E) を端末に出力する。 - 文字の ASCII コードから 0x3F 引いた値の 6 ビットが縦 6ピクセル分のビットマップデータとして描画される。
- 最下位ビットが一番上のピクセルになる。
- 「
- ビットマップデータ (Sixel) の繰り返し描画
- 「
!
+ 繰り返し回数」を端末に出力する。 - 続くビットマップデータ文字 (項番 4) が指定した回数繰り返し描画される。
- 「
- 描画位置の復帰
- 「
$
」を端末に出力する。 - 描画位置が現在の行の左端に移動する。
- 「
- 描画位置の改行
- 「
-
」を端末に出力する。 - 描画位置が次の行の左端に移動する。
- 「
- 項番 3 〜 7 を繰り返す。
- Sixel 文字列の終了
- 「ESC +
\
」を端末に出力する。
- 「ESC +
mlterm 上での Sixel 描画例: