トップページ > 過去ログ > 記事閲覧
画像の出力について
名前:ふるおーと 日時: 2008/05/15 19:56

はじめまして。 プログラムについてはつい最近勉強を始めました。 非常に初歩的な質問なのですが、一番最初の画像を出力する課題で、サンプルをコピペして画像のファイル名を入力したのですが、真っ黒い画面が出るばかりで画像が出てきません。 jpgで、ファイル名も間違っていません。 申し訳ありませんが、どなたか解決方法をご存知の方、ご指導お願いします。

Page: 1 |

Re: 画像の出力について ( No.1 )
名前:憂煉 日時:2008/05/15 21:42

はじめましてふるおーとさん。 残念ながら情報が少なすぎて回答が難しいです。 質問する際には以下の事項が含まれていると答える側も楽で、的確な回答が出しやすいので参考にしてくださいね。 @開発環境 BCCなのか、それともVC++なのか。  VC++なら、どのバージョンのVC++なのかという情報もあるといいかもしれません。 A使ってるパソコンの構成。CPUの名前やメモリの量などです。差し支えのない範囲内でどうぞ。 Bコンパイル時のエラーは出ているか、警告はどうだろうか?   開発環境の下のほうにあるウィンドウの内容をコピペするのもアリです。 Cデバッグモードでの実行時に表示される色々な情報でおかしなことはないか?  これもAと同じような所に出ます。もちろんコピペするのもアリです。 特にBとCが重要だったりします。
Re: 画像の出力について ( No.2 )
名前:ふるおーと 日時:2008/05/15 22:58

すみませんでした。 @VC++ 2005です A1.99GB WindouwsXP      Version2002 B1>コンパイルしています... 1>sample.cpp 1>c:\program files\microsoft visual studio 8\vc\platformsdk\include\mmreg.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 1>マニフェストをリソースにコンパイルしています... 1>リンクしています... 1>マニフェストを埋め込んでいます... 警告が一つ出ています Cログをそのままコピペします。 0:システムの情報を出力します 6: DXライブラリ Ver2.24c 6: OS WindowsXP ( Build 2600 Service Pack 2 ) 107: CPU動作速度:大体1.99GHz 108: MMX命令を使用します 108: CPUベンダ:GenuineIntel 110: CPU名:Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz 111:COMの初期化... 成功しました 136:メモリ総量:2038.36MB 空きメモリ領域:1535.55MB 136:タイマーの精度を検査します 137:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 137: パフォーマンスカウンターを使用します タイマー分解能 : 3579.545000 KHz 138: ソフトの二重起動検査... 二重起動はされていませんでした 139:ウインドウクラスを登録します... 登録に成功しました 139:フルスクリーンモード用のウインドウを作成します 158:カーソルを不可視にしました 159:IMEを無効にしました 361:DirectInput関係初期化処理 361: DirectInput7 の取得中... 成功 384: 引き続き初期化処理... 初期化成功 385: ジョイパッドの初期化... 390: 入力装置を見つけました 392: デバイスの登録名:Logitech RumblePad 2 USB 393: デバイスの製品登録名:Logitech RumblePad 2 USB 394: 周期的エフェクトの作成に失敗しました。 396: ジョイパッドの追加は正常に終了しました 396: ジョイパッドの初期化は正常に終了しました 397: マウスデバイスの初期化... 初期化成功 397: キーボードデバイスの初期化... 初期化成功 399:DirectInput 関連の初期化は正常に終了しました 399:DirectSound の初期化を行います 400:DirectSound インターフェースの取得を行います.... 成功 403:引き続きインターフェースの初期化処理... 成功 481: DirectSound デバイスを列挙します 482: モジュール名: ドライバ記述:プライマリ サウンド ドライバ 483: モジュール名: RtkHDAud.sys ドライバ記述:Realtek HD Audio output 483: 最大サンプリングレート:192.00KHz 最小サンプリングレート:8.00KHz 484: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 484: 利用可能サンプリング精度 485: プライマリ 16bit = OK 8bit = OK 486: セカンダリ 16bit = OK 8bit = OK 487: 利用可能チャンネル 488: プライマリ MONO = OK STEREO = OK 488: セカンダリ MONO = OK STEREO = OK 488:DirectSound の初期化は正常に終了しました 489:DirectDraw 関連の初期化を行います 489: DirectDraw オブジェクトの取得を行います.... 成功 496: 引き続き初期化処理... 初期化に成功しました 500: ビデオカードの情報 502: 画面モード変更処理を開始します 563: ウインドウスタイルをフルスクリーンモード用に変更します... 完了 567: 画面モードの変更処理を開始します 640 x 480 16 bit 568: 画面解像度を変更します... 成功しました 873: 画面モードの変更は正常に終了しました 874: カラー情報 877: A:00000000 B:0000f800 G:000007e0 B:0000001f 880: 出力画面用の DirectDrawSurface を作成します 908: 各スクリーンメモリの配置位置 911: PrimaryBuffer : VIDEOMEMORY 915: BaskBuffer : VIDEOMEMORY 917: 出力画面用の DirectDrawSurface の作成は正常に終了しました 919: Direct3D 関連の初期化を行います 920: Direct3Dオブジェクトを取得します 923: Direct3Dオブジェクトを取得しました 924: 3Dデバイスを作成します... 3Dデバイスの作成に成功しました 946: テクスチャ最大幅:4096 最小幅:1 947: 描画制限: D_D3DPTEXTURECAPS_POW2 = 1 D_D3DPTEXTURECAPS_SQUAREONLY = 0 948: テクスチャピクセルフォーマット 948: 通常グラフィック用 949: BIT:16 RED:5 GREEN:6 BLUE:5 949: RED:00f800 GREEN:0007e0 BLUE:00001f 949: BIT:32 RED:8 GREEN:8 BLUE:8 950: RED:ff0000 GREEN:00ff00 BLUE:0000ff 950: アルファチャンネル付きグラフィック用 951: BIT:16 ALPHA:4 RED:4 GREEN:4 BLUE:4 952: ALPHA:0000f000 RED:00000f00 GREEN:000000f0 BLUE:0000000f 953: BIT:32 ALPHA:8 RED:8 GREEN:8 BLUE:8 953: ALPHA:ff000000 RED:00ff0000 GREEN:0000ff00 BLUE:000000ff 954: Direct3D 関連の初期化は正常に終了しました 955: グラフィック管理系の初期化を行います 958: 3Dグラフィック描画機能を使用します 960: フォントの初期化を行います 962: フォントの初期化は正常に終了しました 963: グラフィック管理系の初期化は正常に終了しました 1025: サーフェス間転送には BltFast を使用します 1026: BitBlt:37244μs BltFast:20980μs 1027: スキャンラインの数:480 1152: 1フレーム当たりの時間は 16 msecです 1154: Tri00:16 msec 1154: Tri01:17 msec 1155: Tri02:16 msec 1156: Tri03:17 msec 1156: 画面モード変更処理は正常に終了しました 1169: オーバーレイサーフェスを使用します    UYVY 1169: DirectDraw 関連の初期化は正常に終了しました 1172: 文字コードバッファの初期化を行います... 完了しました 1220: グラフィックファイル test.jpg がありません 9746: DirectDraw 関連の終了処理をおこないます 9747: フォントの初期化を行います 9749: フォントの初期化は正常に終了しました 9750: グラフィック管理系の終了処理は正常に終了しました 9750: Direct3D 関連の終了処理を行います 9753: 3Dデバイスの削除は正常に終了しました 9753: Direct3D 関連の終了処理は正常に終了しました 9753: メインサーフェスを破棄をします... 完了しました 9763: DirectDrawオブジェクトを解放します 10033: DirectDrawオブジェクトを解放しました 10038: DirectDraw 関連の終了処理は正常に終了しました 10041: DirectInput 関連の終了処理... 完了 10050: DirectSound の終了処理は正常に終了しました 10403: ウインドウを閉じようとしています 10406: ウインドウが破棄されようとしています 10409: ソフトを終了する準備が整いました 10767: 10767: Alloc memory dump Total size:0(0.000kb) Alloc num:0 10768: test.jpgがやっぱり読み込まれていないようです。
Re: 画像の出力について ( No.3 )
名前:憂煉 日時:2008/05/16 00:38

プロジェクトのディレクトリを開いて、直接実行してみてください。それで正常に表示されるようならパスの問題です。 VC++だと開発環境側からのプログラムの呼び出しの時にソースコードのあるフォルダがデフォルトのディレクトリになります。 よってプログラミング中はソースコードと画像などのデータをごちゃ混ぜにする羽目になります。
Re: 画像の出力について ( No.4 )
名前:ふるおーと 日時:2008/05/18 03:14

Debugフォルダにあるexeファイル(らしきもの)を実行してみました。やはり黒い画面です。 私はまだプログラムに関する知識は基礎的なこと以外ほとんどないのでこれで良いのかわかりません。もし上記のものでないなら教えてください。
Re: 画像の出力について ( No.5 )
名前:管理人 日時:2008/05/18 12:43

ファイルはどのフォルダにコピペしたのでしょうか? Debug フォルダにある exe ファイルを直接実行する場合は、そのフォルダに 画像ファイルがある必要があります。 そうではなくて Visual C++ 2005 Express Edition 上から実行する場合は プロジェクトファイル( 拡張子が sln のファイル ) があるフォルダに 画像ファイルがある必要があります。
Re: 画像の出力について ( No.6 )
名前:ふるおーと 日時:2008/05/18 20:04

今見てみたのですが、一応slnファイルのある場所と同じところに画像を置いてます。 ためしにあらゆるところにjpgファイルを置いてみましたが、出ません。
Re: 画像の出力について ( No.7 )
名前: 日時:2008/05/19 11:28

>あらゆるところにjpgファイルを置いてみましたが、出ません。 どこの画像を読み込むようにしていて、 どこにその画像を置いたのか。 あらゆるところとは具体的にどこですか? また、使用したサンプルとはどのコードですか? #こちらは念のため。
Re: 画像の出力について ( No.8 )
名前:ふるおーと 日時:2008/05/19 22:53

とりあえず他スレで見た、C:\の場所に置いてみました。読み込みは、C:\test.jpg と指定しています。 使用したのはゲームプログラム講座、基礎編1の最初のサンプルです。
Re: 画像の出力について ( No.9 )
名前:かたぱると 日時:2008/05/20 11:05

場所を指定する場合ですと エスケープシーケンスの問題ですかね。 C:\test.jpgを指定するのに、 プログラム上の文字列ですと "C:\\test.jpg" と\を二回続けて指定してあげないと文字列の\と認識してくれません。 C:\test.jpg を用意して以下のサンプルを実行してもダメでしょうか。 <以下をコピー> #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // JPG画像の表示 LoadGraphScreen( 0 , 0 , "c:\\test.jpg" , TRUE ) ; WaitKey() ; // キーの入力待ち(『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
Re: 画像の出力について ( No.10 )
名前:ふるおーと 日時:2008/05/20 22:20

出ないですね…。 これはコード云々の問題ではなく単純に置いている場所や指定した画像そのものの問題でしょうか?
Re: 画像の出力について ( No.11 )
名前: 日時:2008/05/21 18:33

>描画制限: > D_D3DPTEXTURECAPS_POW2 = 1 > D_D3DPTEXTURECAPS_SQUAREONLY = 0 ご利用の環境はテクスチャに2の累乗制限がついているようですが、test.jpgのサイズはどうなっていますか? 画像の縦横のサイズが2の累乗になっているかを 確認してみてください。 LoadGraphScreen関数は指定されたファイルから おそらく自動でサイズを取得してテクスチャを 作成すると思いますので、テクスチャの作成に 失敗している可能性があります。 LoadGraphScreen関数の戻り値をまずは調べてみては どうでしょうか?
Re: 画像の出力について ( No.12 )
名前:ふるおーと 日時:2008/05/21 23:06

えーとすみません。具体的な確認の仕方を教えてください。勉強を初めて本当に日が浅いんです。本当にすみません。
Re: 画像の出力について ( No.13 )
名前:Will 日時:2008/05/22 09:52

サイズの確認 エクスプローラでtest.jpgにマウスカーソルを合わせると以下のようなポップアップが表示されます。 大きさ:YYY x ZZZ   ←ここ 種類:JPEGイメージ サイズ:... 戻り値チェック if (LoadGraphScreen(0, 0, "c:\\test.jpg", FALSE) == -1) { printfDx("画像ファイル出力失敗"); } ※そんなことはないと思うけど透過されて表示されていないと思っていた、という落ちはいやなので変えました
Re: 画像の出力について ( No.14 )
名前: 日時:2008/05/22 10:12

>>Willさん フォローありがとうございます。 >>ふるおーと >具体的な確認の仕方を教えてください。 >勉強を初めて本当に日が浅いんです。 画像のサイズ確認は分かりますよね? Willさんが紹介されている方法か、 右クリックメニューのプロパティから 調べる方法などいくつか存在します。 #これはプログラムとは無関係 戻り値の確認ですが、 戻り値とは何かは分かりますよね。。。? まだ初めて間もないということなので、 もしも、分からないならDXライブラリの前に、 C言語の書籍かWEBサイトなどでC言語を先に 勉強されたほうが良いように思います。 初心者にも分かりやすく解説されているサイトは いくつかありますので。 ttp://www9.plala.or.jp/sgwr-t/ #頭にhをつけてください。
Re: 画像の出力について ( No.15 )
名前:ふるおーと 日時:2008/05/22 23:05

わかりました。いままでご指導ご鞭撻ありがとうございました。もう少し勉強を重ねてから挑もうと思います。 本当にありがとうございました。

Page: 1 |