このページの本文へ

前へ 1 2 次へ

Windows Info 第294回

テキストの入った画像を「ImageMagick」を用いてコマンドライン上で作る

2021年09月26日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 複数のPCを1つのモニターに接続している、あるいは複数の仮想環境やエミュレーターなどを利用する場合、壁紙にホスト名などを入れてすぐに区別できるようにしたくなることがある。しかし、テキスト入りの画像ファイルを作るのに、いちいちドローソフトを起動するのも面倒だ。そんなときには、ImageMagickを使うとコマンドラインから簡単にテキストの入った画像ファイルを作ることができる。

ImageMagickを使うとコマンドラインから、テキストを入れた画像を作ることができる。ちょっと映画2001年宇宙の旅に出てくるディスプレイ風の画像にしてみた

30年以上前からある「ImageMagick」とは?

 ImageMagickは1990年に最初にリリースされた、すでに30年以上の歴史を持つソフトウェアである。コマンドラインから画像の処理をするプログラムであり、GUIがなくても操作が可能だ。反面、大量のコマンドラインオプションがあり、とっつきにくい感じもある。とはいえ、すべてを理解する必要はなく、必要な部分だけわかれば十分だ。

 古くからあるソフトウェアのため、インターネット内にもさまざまな情報があり、「ImageMagick ○○のやり方」などで検索が可能だ。なお、ImageMagickというと「セキュリティが……」と言い出す人が多いのだが、ウェブサーバ上で画像生成などに利用している場合の問題であり、ローカルでコマンドラインで使うぶんには特に問題ない。もちろんインターネット上に落ちていたスクリプトを確認もせずに実行させるなんて非常識なことをしなければ、の話ではあるが、それはどのプログラムでも同様に危険である。

 ウェブサイトからダウンロードしてインストールすることも可能だが、wingetでインストールすることもできる。

●ImageMagick
 https://imagemagick.org/index.php

 wingetからのインストールについては、以前の記事(「Windowsで開発中のパッケージマネージャー「winget」がv0.3に」)を参考にしてほしい。

テキストの入った画像を作る

 ImageMagickは、magick.exeコマンドに対してさまざまなサブコマンドとパラメーター指定を行って操作する。ImageMagickでテキストの入った画像を作るには、

magick convert label:"ASCII" test01.png

とする。なお、実行にはPowerShellではなく、cmd.exeのほうを使ってほしい(理由は後述)。出力画像形式は、最後の引数の拡張子から自動的に判断してくれる(この場合はpng)。ただ、これでは、すべてデフォルト値となるので、10ポイント程度の小さな文字にしかならない。まずは、文字色(-fill)、背景色(-background)、フォント(-font)、文字サイズ(-pointsize)を指定してみる。

magick convert -fill white -background srgb(61,64,116) -font "MS-Gothic-&-MS-UI-Gothic-&-MS-PGothic" -pointsize 600 label:"アスキー" test02.png

フォントや色を指定してテキスト入りの画像を作る。Unicode対応のフォントなら日本語を表示させることも可能だ

 -fillと-backgroundでは色を指定する。色名は「magick -list color」で一覧が出る。また、「srgb(R,G,B)」としてRGBでも指定が可能。-fontでは、フォント名を指定するが、通常のWindowsのフォント指定とは違い、こちらも「magick -list font」で一覧が出る。一覧の「Font: 」で始まる行のフォント名を指定する。

 -pointsizeで文字サイズをポイントで指定するが、ImageMagickは、デフォルトでは、72 dpiを想定しており、1ポイントは、1/72インチなので、指定した数値がほぼ、そのままドット数になる。ちなみに「ドット数=ポイント数/72*DPI値」である。正確にいうと、この-pointsizeが指定するのは、文字を描画する領域の高さであり、フォントや他のパラメーター指定によっては、文字の大きさは変わってくるのだが、おおまかには、「-pointsize 100」とすれば、高さ100ドットで文字が描画されると考えていてほぼ間違いがない。

 これが基本ではあるが、壁紙として使う場合には、できあがり画像のサイズを指定する必要がある。また、文字は真ん中に書いてあるほうが便利だろう。この場合には、前記のコマンドに「-gravity center」、「-extent 1024x768」を追加する。

magick convert -fill white -background srgb(61,64,116) -font "MS-Gothic-&-MS-UI-Gothic-&-MS-PGothic" -pointsize 200 -gravity center -extent 1024x768 label:"アスキー" test03.png

 このとき、「-gravity center」は、「Lable:」よりも前に指定する。ImageMagickは複雑なコマンドラインを持ち、1つのコマンドラインで複数の画像を生成することなどが可能なのだが、そのためにオプション指定の位置に影響を受ける。「Lable:」の位置で画像が作られるため、これをセンターに置く「-gravity center」は前に指定していなければならない。このあたりがImageMagickの難しいところなのだが、最初のうちは呪文と思って、指定された順番通りにオプションを入れるといいだろう。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン