2011-10-26 10 views
0

私はこのコードを扱っています:内部のメソッド呼び出しでメタデータのプロパティがすべて満たされています。 しかし、ユーザーコードではほとんどがゼロになっています。なぜこの動作?メソッド内BitmapMetadata:一部のプロパティがクリアされていますか?

public static BitmapFrame GetImageIPTC(string imageFile) 
{ 
    BitmapFrame meta; 
    using (var fs = new FileStream(imageFile, FileMode.Open)) 
    { 
     BitmapDecoder decoder = new JpegBitmapDecoder(fs, BitmapCreateOptions.None, BitmapCacheOption.None); 
     meta = decoder.Frames[0]; 
     var a = ((BitmapMetadata) meta.Metadata).CameraModel; 

    } 
    return meta; 

} 

メタデータプロパティは以下のとおりです。

 ApplicationName "Adobe Photoshop CS5 Windows" string 
-  Author Count = 1 System.Collections.ObjectModel.ReadOnlyCollection<string> 
     [0] "Michele Virgilio" string 
     CameraManufacturer "Canon" string 
     CameraModel "Canon EOS 450D" string 
     Comment null string 
     Copyright "© Michele Virgilio" string 
     DateTaken "16/04/2011 10:30:48" string 
     Format "jpg" string 
     IsFixedSize false bool 
     IsReadOnly false bool 
+  Keywords Count = 96 System.Collections.ObjectModel.ReadOnlyCollection<string> 
     Location "/" string 
     Rating 0 int 
     Subject "Subject description" string 
     Title "Title description" string 

ユーザーコード:

var actual = ImageInfo.GetImageIPTC(filespec); 
var bitmapMetadata = (BitmapMetadata)actual.Metadata; 
var a = bitmapMetadata.CameraModel; 

あなたが見ることができるように、すべてのプロパティがありますが、件名:

 ApplicationName "Adobe Photoshop CS5 Windows" string 
-  Author Count = 1 System.Collections.ObjectModel.ReadOnlyCollection<string> 
     [0] "Michele Virgilio" string 
     CameraManufacturer "Canon" string 
     CameraModel "Canon EOS 450D" string 
     Comment null string 
     Copyright "© Michele Virgilio" string 
     DateTaken "16/04/2011 10:30:48" string 
     Format "jpg" string 
     IsFixedSize false bool 
     IsReadOnly true bool 
+  Keywords Count = 96 System.Collections.ObjectModel.ReadOnlyCollection<string> 
     Location "/" string 
     Rating 0 int 
     Subject null string 
     Title "Title description" string 

答えて

0

使用スコープから出るときBitmapDecoderが破棄されます。デバッガのmetaをreturn metaで確認してください。

+0

はい、なぜBitmapMetadataの一部のプロパティだけがクリアされますか?メソッド呼び出しからメタデータを取り出すためのワークラード? –

+0

一部のメタのみが消去されますか?それは奇妙に聞こえる。メタデータのコピーを作成し、それを返します。 – Fischermaen

+0

既に組み込みのBitmapMetadataのクローンメソッドを試しましたが、運はありません –

関連する問題