• ベストアンサー

bmpよりpngのほうがファイルサイズが大きいです

24bit per pixelの32×32の画像があるのですが, pngファイルの方が4312バイトで、bmpファイルの方が3128バイトと、圧縮しているpngファイルの方が bmpファイルより大きくなってしまっています.理由が分かりません. また、bmpファイルのサイズも単純に考えれば 32×32×3=3072バイトのはずですが、サイズが一致しないのはなぜでしょうか。 理由が分かる方教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> もう一度bmpファイルを見直しましたが、やはり3128バイトでした。 バイナリエディタでファイルフォーット確認すればハッキリしますが、ファイルを作成したアプリケーションや環境でそういう事はあるかも。 8バイト境界(8の倍数バイト)に揃えられたとか。 ちなみに、自分が確認したのはWin7付属のペイントです。 -- > もう一つ質問があるのですが、48ビットの深度を持つpng画像が64ビットの深度を持つpng画像よりファイルサイズが大きくなることはあり得ますか。 画像の中身を考えなければ、 48ビット深度の自然画像 64ビット深度の真っ白なPNG画像 だと、前者の方が大きくなる事は十分にあり得ます。 色数の違う同様の画像でなら、一般的にはそういう事はあんまり無いかも。 が、極端な話、画像フォーマット中に任意のテキストデータを埋め込めますから、いくらでも大きくできるし、添付ファイルをMIMEエンコードしたテキストを埋め込みなんて荒業も可能かも。 そういうチャンクを使ってるかどうかは不明ですが、PNGにファイルを埋め込む、偽装するソフトとかあるし。

tcnksukima
質問者

お礼

ありがとうございました。参考にさせていただきます

その他の回答 (1)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

画像自体のサイズが小さいため、あるいは元のデータに圧縮があんまり効かないため、画像ファイルのヘッダー情報なんかの方が相対的に大きくなるためとか。 bmpの場合、 BITMAPFILEHEADER 14バイト BITMAPINFOHEADER 40バイト 画像データ 32×32×3=3,072バイト で、計3,126バイト、自分のところだとファイルサイズは一致します。 3,128は見間違い、書き間違いでは? bmp ファイルフォーマット http://www.kk.iij4u.or.jp/~kondo/bmp/ -- PNGのファイルフォーマットはややこしいですので、ちょっと割愛。 PNG ファイルフォーマット http://www14.ocn.ne.jp/~setsuki/ext/png.htm ただし、可逆圧縮を行なうので、ファイルのサイズは画像の内容により可変です。 32x32の真っ白なbmpをPNG形式で保存してみると、132バイトとかになりました。 ペイントのブラシで適当な色塗ると、ファイルサイズは増えます。 写真なんかを縮小して貼り付けると、もっとサイズは大きくなります。 bmpの場合、画像の内容でファイルサイズは変わりません。

tcnksukima
質問者

補足

ご丁寧にお答えいただきありがとうございます。 Headerを忘れていました。 もう一度bmpファイルを見直しましたが、やはり3128バイトでした。 pngファイルの場合圧縮されているのでファイルサイズの理由についてはあまり分かりませんね。 もう一つ質問があるのですが、48ビットの深度を持つpng画像が64ビットの深度を持つpng画像よりファイルサイズが大きくなることはあり得ますか。