トップページ > 記事閲覧
画像の形式でバグ報告です
名前:ケジメ 日時: 2014/11/12 00:25

どうも、管理人様、お世話になっています。 ちょっと厄介なバグに遭遇したのでご報告を 発生したのは[png]形式の画像なのですが、内部のカラーチャンネルがグレースケールだと表示が出来ません。 厄介なのはLoadGraphで読込んだ時に返ってくる値が「-1」にならず普通に正常ぽい値が返って来ました
メンテ

Page: 1 |

Re: 画像の形式でバグ報告です ( No.1 )
名前:Ketty 日時:2014/11/12 11:20

こんにちは。 私の環境では、グレースケールのpngを正しく表示できますので、 ・ソースコード ・画像ファイル ・環境 のどれかに問題があるのではないかと思います。 なので、再現可能な最小限のコードと画像ファイルをご提示されるのが 問題解決への近道になるように思います。 いちおう私の確認用コードと画像ファイルを載せておきます。(私の手元ではケジメさんの事象が発生しません) Windows7 64bit DXライブラリ 3.13a Visual C++ 2010 Express Edition /////////////////////////////////////////////////////////////////////////// #include <DxLib.h> // DXライブラリ(ver3.13a)を使用します // メイン関数 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { //++++++++++++++++++++++++++++ // DXライブラリ設定 //++++++++++++++++++++++++++++ // ウィンドウモードで起動 ChangeWindowMode( TRUE ) ; // 画面モード設定 SetGraphMode( 640, 480, 32 ) ; // DXライブラリ初期化(失敗したら終了) if( DxLib_Init() != 0 ){ return 0 ; } // 描画先を裏画面に設定 SetDrawScreen( DX_SCREEN_BACK ) ; //++++++++++++++++++++++++++++ // 画像ロード //++++++++++++++++++++++++++++ int gHandle = LoadGraph( "gray_test.png" ) ; // グレースケール画像 //++++++++++++++++++++++++++++ // メインループ //++++++++++++++++++++++++++++ while( ProcessMessage() == 0 ) { // ESCキーで終了 if( CheckHitKey( KEY_INPUT_ESCAPE ) != 0 ){ break ; } // 画像描画 DrawGraph( 0, 0, gHandle, TRUE ) ; // 表画面反映 if( ScreenFlip() != 0 ){ break ; } // 裏画面クリア if( ClearDrawScreen() != 0 ){ break ; } // しばらく待つ Sleep( 10 ) ; } // DXライブラリ終了 DxLib::DxLib_End() ; // ソフトの終了 return 0 ; } /////////////////////////////////////////////////////////////////////////// 画像ファイル ttp://firestorage.jp/download/7b762002c2d46563faadbfe7197ef28010e9c6be
メンテ
Re: 画像の形式でバグ報告です ( No.2 )
名前:ケジメ 日時:2014/11/12 15:29

Kettyさん> こんにちわ 環境 windows 7 Home 32bit dxライブラリ Ver 3.12e Visual C++ 2008 Express Edition 掲示していただいたプログラムでやっても問題の画像だけが表示が出来ないです。 エクスプローラー等(Windowsフォトビュアーでも)、ペイント系ソフトでも正常に表示されます。 ttp://firestorage.jp/download/2adf15a08afc4dacc1a00c144ba15080b943d203 やはり画像が原因でした お騒がせして申し訳ありません。 調べたらphotoshop等で内部カラーは8bitグレースケール表示なのですが、windowsのファイルの詳細での内部カラーが32bitとと成っていた為でした。
メンテ
Re: 画像の形式でバグ報告です ( No.3 )
名前:Ketty 日時:2014/11/12 16:15

ケジメさんの画像を拝見しました。 なるほど。ほんとですね。 ケジメさんの画像はicon1.pngもicon2.pngも両方とも、 LoadGraphもDrawGraphも戻り値は正常なのに、表示されませんでした。 ログにも特にイレギュラーな内容は出力されてませんでした。 それぞれの画像について、まとめてみました。 icon1.png  プロパティではビット深度8と表示されている  Gimpではインデックスカラーモードと表示される  Gimpでは白色部分がくり抜かれて表示される(透過されているように見える) icon2.png  プロパティではビット深度32と表示されている  Gimpではグレースケールモードと表示される  Gimpでは白色部分がくり抜かれて表示される(透過されているように見える) どちらの画像も、透明部分がある(ように見える)ことが原因かもしれませんね。 (グレースケールなのに透明というのは私は聞いたことがないのでそう思うだけです) 申し訳ないのですが、私はこれ以上わかりかねますので、 管理人様の見解を待たせていただきたく思いますm(__)m
メンテ
Re: 画像の形式でバグ報告です ( No.4 )
名前:管理人 日時:2014/11/15 18:35

ご報告ありがとうございます 私の手元のバージョンでは icon1.png は表示され、icon2.png のみ表示されなかったので、 icon2.png も表示されるようにpngの読み込み処理を修正しました 修正版をこちらにアップしましたので、よろしければお試しください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存