Gimpで描いたBITMAP画をsysvbanner風テキスト(#)に変換

gimp-flower
16 x 16の画像で、適当な絵を書きます(WindowsならMS Paintで良いです)。上記は「花」と描いています。
「ファイル」「名前を付けてエクスポート」にて、拡張子はBMPとして名前を付けたら「エクスポート」を実行します。

「画像のエクスポート」のダイアログが出現するので、「互換性のオプション」、「互換性色空間の情報を書き込まない」にチェックを付けます。
gimp-dialog

gimp-bitmap16x16.bmpという名前を付けて保存しました。

これです。

gimp-bitmap16x16

上記のファイルをメモリダンプするとこのように表示されます。

~$ od -tx1 -Ad gimp-bitmap16x16.bmp | head
0000000 42 4d 36 03 00 00 00 00 00 00 36 00 00 00 28 00
0000016 00 00 10 00 00 00 10 00 00 00 01 00 18 00 00 00
0000032 00 00 00 03 00 00 13 0b 00 00 13 0b 00 00 00 00
0000048 00 00 00 00 00 00 ff ff ff ff ff ff ff ff ff ff
0000064 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
*
0000144 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00
0000160 00 00 ff ff ff ff ff ff ff ff ff ff ff ff 00 00
0000176 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000192 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff 00
~$ 

BITMAPのヘッダ部分を-j54スキップ指定して取り除き純データを3列毎に表示してみます。
3バイトでRGBデータとなっています。

~$ od -tx1 -An -j54 -w3 gimp-bitmap16x16.bmp | head
 ff ff ff
*
 00 00 00
 ff ff ff
*
 00 00 00
*
 ff ff ff
*
 00 00 00
~$ 

白だとFF FF FF、黒だとそれ以外になっていますが、一色(1バイト)のみ見て判定します。cutの-bオプションで1列目だけを抽出します(バイト指定ですので、2バイト目、3バイト目)。
odはデフォルトだと連続するデータを*に置き換えて省略します。これを-vオプションを指定し、省略をなくします。さらにprで16バイトずつで整形して表示してます。

~$ od -tx1 -An -j54 -w3 -v gimp-bitmap16x16.bmp |
> cut -b2,3 | pr -t16l1
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	ff  00	ff  ff	ff  ff	00  00	00  00	00  00	00  ff
ff  ff	ff  00	ff  ff	ff  ff	00  00	00  ff	ff  ff	00  ff
ff  00	ff  00	ff  ff	ff  ff	00  ff	ff  ff	ff  ff	00  ff
ff  ff	00  00	ff  ff	ff  ff	00  ff	ff  ff	ff  ff	ff  ff
ff  ff	00  00	ff  ff	ff  ff	00  00	00  00	00  ff	ff  ff
ff  ff	ff  00	00  ff	ff  ff	00  ff	ff  00	00  ff	ff  ff
ff  ff	fd  00	00  00	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff  00	ff  ff	ff  00	ff  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff  00	ff  ff	fe  00	fc  ff	ff  ff	ff  ff
ff  ff	00  00	00  00	00  00	00  00	00  00	00  ff	ff  ff
ff  ff	fd  ff	ff  00	ff  ff	fd  00	ff  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
~$ 

よーく目を凝らすとわかりますが、花という文字が逆になって浮かんで見えますね。

以下のようにsedで置換してtacで上下逆さにすると、はっきり分かります。

~$ od -tx1 -An -j54 -w3 -v gimp-bitmap16x16.bmp |
> cut -b2,3 | pr -t16l1 | tac | sed 's/00/  /g'
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	fd  ff	ff    	ff  ff	fd    	ff  ff	ff  ff	ff  ff
ff  ff	      	      	      	      	      	    ff	ff  ff
ff  ff	ff  ff	ff    	ff  ff	fe    	fc  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff    	ff  ff	ff    	ff  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	fd    	      	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	ff    	    ff	ff  ff	    ff	ff    	    ff	ff  ff
ff  ff	      	ff  ff	ff  ff	      	      	    ff	ff  ff
ff  ff	      	ff  ff	ff  ff	    ff	ff  ff	ff  ff	ff  ff
ff    	ff    	ff  ff	ff  ff	    ff	ff  ff	ff  ff	    ff
ff  ff	ff    	ff  ff	ff  ff	      	    ff	ff  ff	    ff
ff  ff	ff    	ff  ff	ff  ff	      	      	      	    ff
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff	ff  ff
~$ 

では、bmp画像をsysvbanner風バナー表示してみましょう。

~$ od -tx1 -An -j54 -w3 -v gimp-bitmap16x16.bmp |
> cut -b2,3 | sed 's/00/#/g;/00/!s/.././g' |
> pr -t16Jl1 | tac | sed 's/\t//g;s/\./ /g'
                
                
     #   #      
  ###########   
     #   #      
     #   #      
                
   ###          
   ##   #  ##   
  ##    #####   
  ##    #       
 # #    #     # 
   #    ###   # 
   #    ####### 
                
                
~$ 

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA