複数のPCを1つのモニターに接続している、あるいは複数の仮想環境やエミュレーターなどを利用する場合、壁紙にホスト名などを入れてすぐに区別できるようにしたくなることがある。しかし、テキスト入りの画像ファイルを作るのに、いちいちドローソフトを起動するのも面倒だ。そんなときには、ImageMagickを使うとコマンドラインから簡単にテキストの入った画像ファイルを作ることができる。
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
-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の難しいところなのだが、最初のうちは呪文と思って、指定された順番通りにオプションを入れるといいだろう。
この連載の記事
-
第466回
PC
PowerToysの最近の新機能には、複数アプリを指定位置に起動する「ワークスペース」や新規作成のカスタマイズがある -
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ - この連載の一覧へ