目次

圧縮をしない場合のデータ量との比較

写真の場合

元の写真

ピクセル数 400×300=120000
データ量  120000×3=360000バイト

圧縮をしないbmpデータのファイルの大きさを一緒にグラフにするとこうなります。

可逆であってもデータ量はかなり圧縮される事が分かります。

説明図

図の場合

元の図

ピクセル数 212×306=64872
データ量  64872×3=194616バイト

圧縮をしないbmpデータのファイルの大きさを一緒にグラフにするとこうなります。

同じ色が続く図のような画像は写真より、かなり大きく圧縮される事が分かります。

説明図

画像ファイルの中をのぞく

小さな画像をつくり → 説明図

拡大図はこちら ↓
説明図

これは8x8ピクセルなので、

ピクセル数 8×8=64
データ量  64×3=192バイト

Windows BMP なら圧縮をしないので内容を理解できる。Gimpで.bmpの拡張子をつけるか、ファイルタイプを選択して「Windows BMP」にする。

[アプリケーション]-[アクセサリ]-[端末]で、odコマンドを使う。

od -tx1z aaa2.bmp は、16進表示(x), 1バイトごと(1), 文字表記つき(z), というタイプ(-t) で aaa2.bmp というファイルを表示するという意味。

説明図

24バイトがピクセルの一行(が開始場所)。一番上の行がデータでは最後になっている。

パターン
ff ff ff
ff 00 00
00 00 ff
00 ff 00
ff ff 00 シアン
000000

PNG

PNGは可逆の圧縮をしている。Gimpで同じ画像を「名前をつけて保存」で.pngの拡張子をつけるか、ファイルタイプを選択して「PNG 画像」にする。

od -tx1z aaa.png は、16進表示(x), 1バイトごと(1), 文字表記つき(z), というタイプ(-t) で aaa.png というファイルを表示するという意味。

説明図

IHDRなどがそのブロックの名前。その前の4バイトがブロックの長さ。各ブロックの最後の4バイトはデータのチェック(Cyclic Redundancy Check)。

実際の圧縮された画像データはIDATの部分60バイト。これが、BMPで保存される192バイトと同等の情報を持っていることになる。