3DS Homebrew 画像の表示をためしてガッテン - 大人の自由研究

大人の自由研究 ホーム » 3DS » 3DS Homebrew 画像の表示をためしてガッテン

3DS Homebrew 画像の表示をためしてガッテン


 extdata_dump_MHXXのCIA版も出来たので、文字だけじゃなく画像なんかも表示できたら見栄え良くなるかな、、と思いPNG画像表示をためしてガッテン。

 devkitPro のサンプル「24bit-color」があったので、ビルドしてみた
 
 と、うまく表示が出来ない(汗)


 ソースは簡単で、memcpy で画像が表示される

  //Copy our image in the bottom screen's frame buffer
  memcpy(fb, brew_bgr, brew_bgr_size);

 この部分

 frame buffer
 聞いたことある。なるほど~

 予め、frame buffer に入れるデータを用意しておいて、memcpy なのね。

 そのデータ、オリジナルは PNG形式(gfx\brew.png)があって、Make時に、変換している
  @convert $< -rotate 90 $@

 ここがミソだった。
 ImageMagick を使い、PNG画像を90度回転させて、raw bgr に変換しているようだ

 って事は、ここで作られるファイル(.bgr)に問題があるのかな。
 convert コマンドのオプションを色々と調べたのがわからずー
 Windows版が悪いのか?

 ImageMagick のバージョンの差なのか。。。とりあえず上げてみるか。
 そもそも、ImageMagickを入れたのか記憶にない(汗)

 バージョン確認するや
 Version: ImageMagick 6.9.3-3 Q16 x64 2016-02-06 http://www.imagemagick.org

 古そうだ(汗)

 で、最新バージョンを持ってきてインストール!
 Version: ImageMagick 7.0.5-9 Q16 x64 2017-05-28 http://www.imagemagick.org

 新しくなった(笑)

 でもって、再度ビルドを実行。
 変換された、.bgr のサイズが違うw
 違うというか、正しいサイズだ。230,400 バイト。320(横)x240(縦)x3(blue, green, red)=230,400。
 ちなみに、古いバージョンだと、307,200 バイトになってた。320(横)x240(縦)x4(blue, green, red, alpha)=307,200。恐らく alpha値のデータが入っていたのかなと。
 

 ご覧の通り、ちゃんと画像が表示されるのでありました。


 また、以下のサイトでは、オンラインで変換できるようだった。
 3DS Homebrew tool: image to BIN converter

 画像を読み込んで、rotate 90°のチェックだけ入れて、ダウンロード。
 試しに、そのデータのサイズも230,400 バイトで。
 preserve transparency にチェックを入れると 307,200 バイト のデータになるようだった。

 なんとJavaScriptで、rawデータを作成しているw賢いねw表示部分はブラウザに任せて、表示されたデータを読み取ってる感じでしょうか。
 
 このソース見て、自分で作ろうかと思ったのですが、ImageMagickのアプデで解決しましたw

 余談だが、
 .bgr ではなく、.rgb と、出力の順番を変えてみるとw
 

 想像通り、変な色になる(笑)



関連記事
スポンサーサイト
コメント(管理者承認後に公開します)

※未入力可能。メールアドレスは公開されますので、ご注意ください。
非公開コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

2017-06-03 11:36 │ from URL

トラックバック

http://ukkey3.blog33.fc2.com/tb.php/735-40bb24e5