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)」をして下さい)
|