画像をPPMフォーマットで保存する

ppmという拡張子の画像フォーマットがあります。
LinuxUnix系では一般的らしいのですが、ずっとWindowsだった私は今回はじめて知りました。
今回PPMフォーマットでのファイル保存にちょっと苦労してしまったので覚え書きを残しておこうと思います。

フォーマット

  • ヘッダ部とデータ部がある
  • ヘッダ部はASCII文字。ただし-改行はLFのみ。CRLFはNG。
    • 保存先ファイルはバイナリモード(wb)でファイルオープンする必要がある。
  • データ部はバイナリ(P6形式の場合、P3形式ならデータ部もASCIIらしいけど未検証)。
    • ピクセルオーダー、カラーオーダー共にBMPと異なる
      • ピクセルオーダー:左上→右下の順
      • カラーオーダー:R→G→Bの順

その他メモ

  • GIMPIrfanViewBMPPPMへ変換できます。
  • 保存先ファイルをテキストモード(w)でファイルオープンすると、1600x1200、2048x2048などで画崩れが発生することがありました(ドラクエ旅の扉みたいになる)。