0

ハードディスクにあるファイルが画像かどうかを確認してから使用したいのですが。

私はC++/Cliを使用しています

OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK ) {
     Bitmap^ PreviewImage = gcnew Bitmap(openFileDialog1->FileName); //If File is not an image this will crash.

}

行でコメントしたように、ファイルがエラーを生成する画像ではない場合、ファイルが事前に画像であるかどうかを確認するにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

1

例外をキャッチすることによって。

TryRead.Netには、例外をスローする代わりにfalseを返すメソッドはありません。

拡張子を確認する.pngこともできますが、ファイルが無効な画像である可能性もあります。
(ただし、Filterそもそもユーザーが他のファイルタイプを選択しないように設定する必要があります)

于 2012-04-19T18:18:20.380 に答える
1

OpenFileDialogにフィルターを追加して、ユーザーが画像のみを選択できるようにします。

OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
openFileDialog1->Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF" ;

http://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.filter.aspxを参照してください

ただし、ユーザーはダイアログのテキストボックスに無効なファイル名をいつでも入力できるため、ファイルを開こうとするときにエラーをチェックする必要があります。

今日のプログラミングは、より大きく、より優れた馬鹿に耐えるプログラムを構築しようと努力しているソフトウェアエンジニアと、より大きく、より優れた馬鹿を生み出そうとしている宇宙との間の競争です。これまでのところ、宇宙が勝っています。

リッチクック

于 2012-04-19T18:30:04.517 に答える
0

慣例により、通常、ファイルの内容は拡張子名で記述されます。私があなただった場合は、.bmp、.jpeg、.jpg、.gifなどのみを許可するように基本的なチェックを行います。また、別の回答で述べられているように、例外をキャッチする必要があります。そこでエラーが発生したことをユーザーに伝えます。

あなたはこのようなことをすることができます:

OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;
if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK ) {
     try
     {
         Bitmap^ PreviewImage = gcnew Bitmap(openFileDialog1->FileName); //If File is not an     image this will crash.
     }
     catch(Exception ^ex)
     {
           //do something with the exception here
     }
}
于 2012-04-19T18:19:52.823 に答える