最も小さいPngファイル

投稿日:2024年3月15日(金)
その他
smallest Png file

最初に

この記事はPngのフォーマット構造の最小サイズの解説です。
バイナリ自体はあまり詳しくはないので、間違っている部分があると思います。

Pngファイルサイズの最小サイズは67バイトです。
バイナリエディターを使って確認すると以下の通りです。
binary-img

67バイト1x1サイズを200倍に拡大した画像です。(ダークモードだと薄っすら見える)

89 50 4E 47 0D 0A 1A 0A

これはPngシグネチャと言いPngフォーマットだと示す固定バイト(8 bytes)です。
これがないとPngファイルとして認識しません。
この16進数データをASCIIコードに直すと.PNG....という文字が表示されます。
ちなみにjpgの場合はFF D8 FFと表記されます。

00 00 00 0D 49 48 44 52 00 00 00 01 00 00 00 01 01 00 00 00 00 37 6E F9 24

次にIHDR(画像ヘッダーチャンク) (26 bytes) これは画像のメタデータが記録されています。
画像サイズ、カラータイプ、ビット深度、圧縮方法などの情報があります。
この16進数データの49 48 44 52をASCIIコードに直すとIHDRという文字が表示されます。

00 00 00 0A 49 44 41 54 78 01 63 60 00 00 00 02 00 01 73 75 01 18

次にIDATチャンク(画像データチャンク)
ここに画像の本体情報が記録されています。 この16進数データの49 44 41 54をASCIIコードに直すとIDATという文字が表示されます。

00 00 00 00 49 45 4E 44 AE 42 60 82

最後にIENDチャンク(画像終端チャンク)
データの終わりを示す固定バイト(12 bytes)です。 この16進数データの49 45 4E 44をASCIIコードに直すとIENDという文字が表示されます。 最後の4バイトはCRCです。