「圧縮と解凍」なるほどなるほど3


●どのくらい圧縮できるのか、実際にやってみないとわかりません

ファイルの圧縮なんだけど、このファイルは圧縮するとサイズが50パーセント(半分)になる、このファイルを圧縮すると25パーセント(4分の1)になるといった一定の法則はないんです。

図1

例えば、上の○印の部分を見てください。
同じ拡張子の画像ファイル(.bmp)なのに圧縮率がtest02.bmpとtest03.bmpでは違うでしょ
同じ拡張子の文書ファイル(.doc)なのに圧縮率がtest1.docとtest2.docでは違うでしょ

同じ拡張子のファイルでも内容によって圧縮率は変わるんです

どうしてファイルによって圧縮率が変わるかというと、

例えばABCのデータがあったとします。並び方で30になります。

ABCABCABCABCABCABCABCABCABCABC

この並びだとデータの合計は30です

AAAAAAAAAABBBBBBBBBBCCCCCCCCCC

もしデータがこんなふうに並んでいたとしたら

A10B10C10

こんなふうに省略できて
データの合計はになります

これがファイル圧縮の仕組みなんです。
実際にはもっと複雑な仕組みで圧縮してるんだけど、これが基本形です。
僕たちビギナーは、この程度知ってればいいんじゃないのかなあ。

で、このデータの並び方で(同じ拡張子のファイルでも)圧縮率がいろいろに変わってくるわけなんです。

AAABCABCCCAAAABBBBCCCCCCABBCCC

もしデータがこんなふうに並んでいたとしたら
A3BCABC3A4B4C6AB2C3になるから
データの合計は19になります

圧縮率はファイルのデータで変わります


●圧縮方式が違うと圧縮率が違います

日本版のLHA方式(***.LZH)とアメリカ版のZIP方式(***.ZIP)では、圧縮率が違うみたいです。
LHMelt(LZHファイル)で圧縮した(図1)のと同じファイルをWinZip(ZIPファイル)で圧縮してみました。

図2
(注意)LHMelt(LZH)とWinZip(ZIP)では、圧縮率の計算が逆になっています。

図1と図2を表にまとめてみました。
ファイル名 元のサイズ LHA方式で圧縮したサイズ ZIP方式で圧縮したサイズ
test01.bmp 547038バイト 7076バイト 10479バイト
test02.bmp 241170バイト 3273バイト 5149バイト
test03.bmp 204478バイト 6887バイト 9408バイト
test1.doc 11776バイト 2492バイト 2477バイト
test2.doc 12288バイト 2848バイト 2821バイト
test3.doc 10240バイト 2166バイト 2150バイト

この表だと、画像ファイル(.bmp)は、LHA方式(LZHファイル)のほうが圧縮率いいみたい、反対に文書ファイル(.doc)はZIP方式(ZIPファイル)のほうがいいみたいです。
でもデータ次第でいろいろ変わってくるみたいです。少しでも圧縮率をよくしたい人は、いろんな圧縮方式を試してみてください。


MENUに戻れます