ndsでのjpeg表示に再挑戦(4)
VS2008C++でビルドできるjpegのソースを見つけたので、ビルドしてjpegファイルを読み込んで見ようと思ったのですが、その前に、このソースに関することを調べてみました。
Jpegと書くのかな。これはlinuxの標準プログラムのようです。ちゃんと調べてはいないので間違っているかもしれません。
このソースでJpegを展開するのは、djpegというコマンドのようです。今回はdjpegのソースを調べていけばいいことがわかりました。このdjpegはjpeg形式からいろいろな画像形式にデコードできるようです。さすがにndsのVRAM形式に変換できるものは無いですが、変換できる形式で近いものがないか、もしくはrawデータに近いものが無いか調べてみました。24ビットBMP形式はほぼrawデータなのですが、縦座標が反転してデータが並んでいるので、ちょっと、面倒です。他を調べたところ、PPM形式がほぼrawデータであることがわかりました。
PPM画像フォーマット
PPM形式は下記のようです。
- P6・・・(2バイト)
最初の2バイトに24ビットカラー(Portable pixmapでBinary)を示す"P6"というコードが入っています。
- 0x0a・・・(1バイト)
改行の1バイト(改行コードは0xaを使っています。
- 画像幅 画像高さ
テキストで画像サイズが入っています。画像幅と画像高さの区切りは0x20(スペース)です。
- 0x0a・・・(1バイト)
改行の1バイト(改行コードは0xaを使っています。
- RGBカラーの最大値
画像データの最大値がテキストで入っています。RGB各データは1バイトなので最大255となります。
- 0x0a・・・(1バイト)
改行の1バイト(改行コードは0xaを使っています。
- 画像データ
画像データはRed,Green,Blueの3バイトがこの順でドット分並んでいます。24ビットrawデータと考えて大丈夫です。
djpegプログラムでppmデータを出力させることにします。とりあえず、VC2008C++でdjpeg.slnを読み込んで動かしてみようと思います。実際に読み込んでみると、「構成プロパティ」の「リンカ」で"..\jpeg\Debug\jpeg.lib"としてjpeg.libが指定されていたので、このlibもビルドする形で行ってみたいと思います。
今日はこの辺で。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム