Chafa について
Chafa は画像とアニメーションをテキストと色文字に変換し、モダンターミナル内に表示します。ANSI、Unicode、HTML など複数の出力形式に対応しており、CLI 環境でメディアをプレビューするのに適しています。
主な機能
- 01画像を ANSI/Unicode テキストアートに変換
- 02ターミナル内でアニメーションをフレーム単位で表示
- 03コマンドフラグで出力サイズと色深度を制御
- 04複数画像のバッチ処理
活用シーン
- 01外部ビューアを使わずターミナルセッションで画像をプレビュー
- 02画像の ASCII アート表現を生成
- 03CI ログやヘッドレス環境でアニメーションを表示
- 04ターミナルベースのワークフロー用に視覚的出力を作成
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にchafa --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
概要
Chafaは、アニメーションGIFを含む画像データを、グラフィック形式や、ターミナルでの表示に適したANSI/Unicode文字アートに変換するコマンドラインユーティリティです。幅広い機能を備えており、歴史的なテレプリンターから最新のターミナルエミュレーターまで、さまざまなデバイスで利用できます。
中核となる機能は、公開された十分なドキュメントを備えるAPIを持つCライブラリによって提供されます。
ライブラリとフロントエンドツールは、いずれもGNU劣等一般公衆利用許諾契約書バージョン3以降(LGPLv3+)の対象です。
公式ウェブページとC APIドキュメント はオンラインで参照できます。スクリーンショットはギャラリーをご覧ください。
インストール
Chafaはお使いのディストリビューションでパッケージ化されている可能性が高いため、開発する予定がない場合は、公式パッケージを利用するのがおすすめです。最新バージョンを自分でビルドしたい場合は、以下をお読みください。
gitリポジトリからChafaをコンパイルするには、GCC、make、Autoconf、Automake、Libtool、GLib開発パッケージをインストールする必要があります。ライブラリだけでなくコマンドラインツールchafaもビルドする場合は、さらに以下の開発パッケージが必要です。
- FreeType2。多くの場合、
libfreetype6-devまたはfreetype2-develとしてパッケージ化されています。 - libavif(オプション)。
libavif-devまたはlibavif-develを探してください。 - libdeflate(オプション、PNGのデコードを高速化します)。
libdeflate-devまたはlibdeflate-develを探してください。 - libheif 1.12以降(オプション)。
libheif-devまたはlibheif-develを探してください。 - libjpeg(オプション)。
libjpeg-dev、libjpeg62-devel、またはlibjpeg8-develを探してください。 - libjxl(オプション)。
libjxl-devまたはlibjxl-develを探してください。 - librsvg(オプション)。
librsvg2-devまたはlibrsvg-develを探してください。 - libtiff(オプション)。
libtiff5-devまたはlibtiff-develを探してください。 - libwebp(オプション)。
libwebp-devまたはlibwebp-develを探してください。
ドキュメントをビルドする場合は、gtk-docも必要です。
まず、リポジトリをクローンします。
$ git clone https://github.com/hpjansson/chafa.git
次に、最上位ディレクトリに移動し、以下のシェルコマンドを実行します。
$ ./autogen.sh
$ make
$ sudo make install
これで完了です!
Pythonバインディング
Erica Ferrua Edwardsdóttirは、Chafa用の優れたPythonバインディングをメンテナンスしています。Pythonを使う方は、ぜひご覧ください。使いやすく、詳細なチュートリアルも用意されています。
JavaScriptバインディング
Héctor Molinero Fernándezは、自身のWebAssembly移植版をベースにした素晴らしいJavaScriptバインディングをメンテナンスしています。NPMから入手でき、Node.jsやウェブブラウザーなどで使用できます。
