こちらの記事を書いたら、「そんなの当たり前だろ!」というコメントが多くきたので、JPG以外のフォーマットでもbase64した後にgzipしたらどうなるのかを検証してみました。
皆様にとっては当たり前のことですが、一応クイズ形式の記事にしてみました。
なお、この記事の答えの通りにならないような画像を意図的に作ることはできそうですが、そういうエッジケースは無視して、世の中にある多くの画像についてことだと思ってお考えください。
JPG画像
JPG画像をbase64した後に、gzipするとどうなるでしょうか・・・?
A. ほぼ元のサイズに戻る
B. 元のサイズよりも小さくなる
C. 元のサイズよりも大きくなる
BMP画像
BMP画像をbase64した後に、gzipするとどうなるでしょうか・・・?
A. ほぼ元のサイズに戻る
B. 元のサイズよりも小さくなる
C. 元のサイズよりも大きくなる
答えは・・・
Bです。
https://www.pakutaso.com/20240644165post-40388.html
こちらの画像をbmpに変換して検証してみました。
$ sips -s format bmp shikun20220402_125829_TP_V.jpg --out shikun20220402_125829_TP_V.bmp
$ cat shikun20220402_125829_TP_V.bmp | wc -c
5760054
$ cat shikun20220402_125829_TP_V.bmp | base64 | wc -c
7680073
$ cat shikun20220402_125829_TP_V.bmp | base64 | gzip | wc -c
2956989
PNG画像
PNG画像をbase64した後に、gzipするとどうなるでしょうか・・・?
A. ほぼ元のサイズに戻る
B. 元のサイズよりも小さくなる
C. 元のサイズよりも大きくなる
答えは・・・
Aです。
https://www.pakutaso.com/20240644165post-40388.html
こちらの画像をpngに変換して検証してみました。
$ sips -s format png shikun20220402_125829_TP_V.jpg --out shikun20220402_125829_TP_V.png
$ cat shikun20220402_125829_TP_V.png | wc -c
2062109
$ cat shikun20220402_125829_TP_V.png | base64 | wc -c
2749481
$ cat shikun20220402_125829_TP_V.png | base64 | gzip | wc -c
2082395
SVG画像
SVG画像をbase64した後に、gzipするとどうなるでしょうか・・・?
A. ほぼ元のサイズに戻る
B. 元のサイズよりも小さくなる
C. 元のサイズよりも大きくなる
答えは・・・
Bです。
https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Ghostscript_Tiger.svg
こちらのファイルを使って実験してみました。
$ cat Ghostscript_Tiger.svg | wc -c
68630
$ cat Ghostscript_Tiger.svg | base64 | wc -c
91509
$ cat Ghostscript_Tiger.svg | base64 | gzip | wc -c
29405
MP3音声
画像ではないですが、おまけです。
MP3音声をbase64した後に、gzipするとどうなるでしょうか・・・?
A. ほぼ元のサイズに戻る
B. 元のサイズよりも小さくなる
C. 元のサイズよりも大きくなる
答えは・・・
Aです。
こちらのフリー音源を使って実験したみました。
https://dova-s.jp/bgm/play13208.html
$ cat これって尾行だったんですかセンセイ.mp3 | wc -c
2991982
$ cat これって尾行だったんですかセンセイ.mp3 | base64 | wc -c
3989313
$ cat これって尾行だったんですかセンセイ.mp3 | base64 | gzip | wc -c
3003615
理由
さて、なぜフォーマットによって結果が変わるのでしょうか?
その理由は・・・
当たり前ですよね