3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Linux】コマンドラインで画像を生成する

Last updated at Posted at 2024-04-07

※ この記事は 2022年6月 に作成したものを一部改稿したものです。

本記事のテーマは 画像生成 です。

特にWeb系の開発をされている方の中には、ページ上にサンプルとして表示する画像が欲しくなったり、決められたサイズの画像を用意する必要に迫られたりしたことのある方が多いのではないでしょうか。

そんな時、Google で画像を検索してダウンロードしたり、MSペイントなどのツールで画像を作成することもできますが、コマンドラインで簡単に画像を生成できるととても便利です。

ここでは、コマンドラインで画像を生成できるツールをいくつか紹介したいと思います。

ターミナル上に画像を表示する

せっかくコマンドラインで画像を生成できても、生成した画像を確認するためにいちいちビューアを起動するのはやや面倒です。
そこで、画像生成ツールの紹介に入る前に、ターミナル上に画像を表示する方法を紹介します。

ターミナル上に画像を表示する方式・ツールは色々ありますが、おすすめは Sixel です。
Sixel は Digital Equipment Corporation (DEC) によって導入されたプリンタおよび端末イメージング用の画像フォーマットの1つで、エスケープシーケンスを使用してデータを表現することからターミナルでの表示に適しています。

Sixel で画像を表示するためには、mintty や RLogin, xterm といった Sixel Graphics をサポートするターミナルを利用する必要があります。

WSL (Windows Subsystem for Linux) を使っている方には、WSL向けの mintty である WSLtty がおすすめです。

画像を表示するには、img2sixel コマンドを使用します。
Ubuntu の場合、apt を使用してインストールできます。

$ sudo apt install libsixel-bin

パッケージマネージャーでインストールできない場合、ソースからビルドすることも可能です。

以下のようにファイルを指定するか、標準入力にデータを流し込むことでターミナル上に画像を表示できます。

2024-04-07 23_43_07-WSL.png

画像生成ツール

ここからは画像生成ツールを紹介していきます。

ImageMagick

まずは ImageMagick です。
ImageMagick は画像を操作したり表示したりするためのソフトウェアで、多数のコマンドラインツールを含んでいます。
ファイル形式の変換やリサイズといった基本的な操作から、合成、変形、GIFアニメーションの作成など非常に多くの操作が可能で、ゼロから画像を生成することもできます。

Ubuntu の場合、apt を使用してインストールできます。

$ sudo apt install imagemagick

以下は画像生成の例です。

2024-04-07 23_44_40-WSL.png

convert コマンドは ImageMagick で1番頻繁に使用するコマンドで、-size オプションでサイズを指定し、xc: で背景色を指定して画像を生成しています。

2色を重ね合わせた画像を生成するには、以下のように -composite オプションを使用して画像シーケンスを合成します。

2024-04-07 23_46_28-WSL.png

この例では img2sixel コマンドにパイプで渡すために、出力先に標準出力 (-) を指定しています。
ゼロから生成した画像を標準出力に出力する場合、ファイル形式が分からないため png:- のように指定する必要があります。

また、複数の画像からアニメーションGIFを生成することも可能です。

imagemagick.gif

Graphviz

続いて紹介するのは Graphviz です。
Graphviz はトランジスタの発明などで知られるAT&T研究所が開発したソフトウェアで、DOT 言語というデータ記述言語を用いてグラフを描画することができます。

Ubuntu の場合、apt を使用してインストールできます。

$ sudo apt install graphviz

以下は、簡単な DOT ファイルを作成しグラフ画像を生成した例です。

2024-04-07 23_57_01-WSL.png

上の例では dot コマンドを使用してグラフを作成していますが、他にも作成されるグラフのレイアウトが異なる neatofdp といったコマンドが使用できます。
以下の例では sed コマンドで FizzBuzz の結果から DOT 言語のスクリプトを組み立て、fdp コマンドを使用してグラフ化しています。

2024-04-08 00_01_38-WSL.png

gnuplot

続いて紹介するのは gnuplot です。
gnuplot はデータや数式からグラフを生成することができるソフトウェアで、学術研究でも広く利用されています。

Ubuntu の場合、apt を使用してインストールできます。

$ sudo apt install gnuplot

以下は、媒介変数表示を用いて半径1の円を描画した例です。

2024-04-08 00_04_24-WSL.png

gnuplot は対話的にコマンドを実行することもできますが、上の例ではコマンドを circle.plt というファイルに保存して引数として指定しています。

また、pm3d というスタイルを使用すると3次元のグラフを立体的に描画することができます。
以下の例では、ループ処理を利用して3次元グラフからアニメーションGIFを生成しています。

gnuplot.gif

wordcloud

続いて紹介するのは wordcloud です。
wordcloud は Python 製のワードクラウド生成ツールで、Python のパッケージマネージャーである pip などを使用してインストールできます。

$ sudo apt install python3-pip
$ pip install wordcloud

wordcloud をインストールすると wordcloud_cli というコマンドが使用できるようになります。
以下は、wordcloud の README からワードクラウド画像を生成する例です。

2024-04-08 00_10_59-WSL.png

qrencode

続いて紹介するのは qrencode です。
qrencode は、任意の文字列からQRコード画像を生成できるユーティリティツールです。

Ubuntu の場合、apt を使用してインストールできます。

$ sudo apt install qrencode

以下は、Qiita のトップページ のURLからQRコード画像を生成する例です。

2024-04-08 00_12_26-WSL.png

textimg

最後に紹介するのは textimg です。
Go 製のコマンドラインツールで、ターミナル上の色付きのテキストを画像に変換することができます。

Go がインストールされている場合、以下のコマンドでインストールできます。

$ go get -u github.com/jiro4989/textimg/v3

以下は、ANSIエスケープシーケンスを使用して出力した256色の背景色付きテキストを画像に変換する例です。

2024-04-08 00_16_00-WSL.png

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?