■86301 / inTopicNo.1) |
BitmapDecoder.Create()の使い方について |
□投稿者/ なと (5回)-(2018/01/15(Mon) 14:50:38)
|
分類:[C#]
2018/01/15(Mon) 14:55:43 編集(投稿者)
開発環境はWindows10 / C# 2010 .NET FrameWork4.0 です。
先日解決とした下記の質問の件につきまして完成したプログラムをWindows7のPCでテストした所、 下記の通りエラーが発生することが分かりました。
不適切な部分があれば教えていただけないでしょうか。
当時の質問スレッド http://bbs.wankuma.com/index.cgi?mode=al2&namber=86272
プログラム public static string ReadExif(string path) { using (FileStream fs = File.OpenRead(path)) { Image bmp = Image.FromStream(fs, false, false); //↓エラー箇所 var dec = BitmapDecoder.Create(fs, BitmapCreateOptions.None, BitmapCacheOption.Default); var frame = dec.Frames[0]; var meta = (BitmapMetadata)frame.Metadata; var date1 = meta.GetQuery("/ifd/{ushort=34665}/{ushort=36867}"); if (date1 != null) return date1.ToString(); } return "";
エラーメッセージ System.IO.FileFormatException: イメージ形式を認識できません。 ---> System.Runtime.InteropServices.COMException: HRESULT からの例外:0x88982F07 --- 内部例外スタック トレースの終わり --- 場所 System.Windows.Media.Imaging.BitmapDecoder.SetupDecoderFromUriOrStream(Uri uri, Stream stream, BitmapCacheOption cacheOption, Guid& clsId, Boolean& isOriginalWritable, Stream& uriStream, UnmanagedMemoryStream& unmanagedMemoryStream, SafeFileHandle& safeFilehandle) 場所 System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache) 場所 System.Windows.Media.Imaging.BitmapDecoder.Create(Stream bitmapStream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption)
画像ファイルの種類(どのファイルでもエラーが出る) ・tiff(EXIF有り) ・jpg(EXIF有り) ・jpg(EXIF無し)
実行環境(エラーが出る) ・Windows 7 Pro 32bit ・Windows 7 SP1 Pro 64bit
開発環境(問題なし) ・Windows 10 Pro 1703 64bit
それと、EXIF情報の無いjpgファイルを開く時に「NotSupportedException」が出てしまうのですが、try〜catch以外の方法で (あまり負荷をかけずに)検知するにはどうするのがお勧めでしょか。
以上、よろしくお願いいたします。
|
|