大きなサイズのビットマップ画像を生成する
8×8ドットくらいならば手作業で作成しても問題ないでしょう。では、256×256サイズのビットマップ画像を作成するとしたらどうでしょうか。さすがに手作業で作ろうとは思わないでしょう。そこで今度はコマンドを利用して画像を生成してみます。
まずは、真っ黒な画像を生成します。ヘッダーは以下のようにし、値は0にします。0を256×256=65536個作成すれば出来上がりです。
最新のmacOS BigSurはzshが使えるので、これを利用すると簡単にたくさんの0を生成できます。使ってるシェルがzshでない場合はzshを起動すればよいでしょう。zshを起動するには以下のようにコマンドラインから入力します。
>zsh
なお、パスが通っていなかったりする場合はwhichコマンドを使って、どこにあるか調べることができます。
>which zsh
zshがどうしても使えない場合は、bashでの方法を後述しますので、そちらを見てください。
zshには繰り返しコマンドを実行するrepeatがあります。以下のようにすると1が8個出力されます。
repeat 8 echo 1
ここまで出来れば256×256サイズの画像を作成するのは簡単です。以下のようにコマンドを入力します。なお画像のファイル名はblack2.pbmとしています。
echo 'P1'>black2.pbm
echo '256 256'>>black2.pbm
repeat 65536 echo -n 1 >>black2.pbm
これでできあがりです。アプリケーションで開いて確認しましょう。ちゃんと256×256サイズの真っ黒な画像が表示されます。
PBMの中身はテキストですが、上記のようにすると1が65536個横並びになります。
1 1 1のように半角空白を入れたい場合は以下のようにバックスラッシュをつけて、その後に半角空白を入れます。
ここまではzshでした。が、世間の標準はbashです。という事で、今度はbashでの繰り返しを使って画像を生成します。
bashの場合、繰り返しにはforを使います。forはこれまでにも何度も使ってきたので、おなじみでしょう。
以下のようにすると画面に0が8個出力されます。
for i in {1..8};do echo 0;done
繰り返し方法が分かれば後は簡単です。先ほどのzshのrepeat部分を置き換えるだけです。
先ほどと同じファイル名だと確認にならないので、ここでは、black3.pbmとしました。
echo 'P1'>black3.pbm
echo '256 256'>>black3.pbm
for i in {1..65536};do echo -n 1\ ;done>>black3.pbm
これで256×256サイズの真っ黒な画像の出来上がりです。画像を確認してみましょう。
あとは真っ白な画像や市松模様を作成してみましょう。ここまでの説明で十分にできるはずです。