今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

画像ファイルのフォーマット

みんな何かとJPEGを使いたがる。確かに普通の風景などの写真はJPEGが比較的向いてる。でもねー、画面のスクリーンショットJPEGにするのはよして欲しい。
パソコンのスクリーンショットのような、使われている色数が限られていて、その中に文字や図形などがくっきりと描かれるような画像ってのはJPEGには向いてない。こういうのはPNGを使うのが正しい。JPEG圧縮にはコントラストが強い部分はにじんでしまう欠点がある。しかも非可逆圧縮なので、一旦にじんでしまった情報を元に戻すことはできない。PNG可逆圧縮なのでにじむことはない。
PNGJPEGを比べたときにJPEGが有利なのは、圧縮率が高いことだけしかないのを覚えておいて欲しい。特に、微妙な色合いが連続的に変化するような写真は、JPEGが得意としている分野だ。圧縮率を高くできるので、記憶メディアの容量が同じでもPNGの何倍もの写真を記録できるのだから。それに、デジカメで撮影した写真は、そのデジカメの画質が取り込めるすべての情報をJPEGフォーマットの写真に記録しているので、非可逆であるデメリットはほとんどない。だから、記憶メディアの容量があまりリッチではないデジカメなどでは、JPEGが好まれるわけだ。
でも、記憶メディアの容量にあまり気にする必要がない場合は、わざわざ非可逆フォーマットのJPEGを使うべきではないのよ。失われた情報は取り戻せないんだから。
例としてこのページのカレンダー部分を二つのフォーマットで保存してみた。フォーマットはアップロード前のフォーマット*1で、JPEGPNGとファイルサイズが近くなる程度まで圧縮率を上げた。

PNGJPEG
3279バイト4769バイト
JPEGはアップロード前は4769バイトなのにアップロードすると5264バイトに増えてるし。。。

*1:はてなではアップロードした画像は勝手にJPEGにされてしまうようなので、PNGは自分のサイトに置いたのを参照している。