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
はい、なぜBitmapMetadataの一部のプロパティだけがクリアされますか?メソッド呼び出しからメタデータを取り出すためのワークラード? –
一部のメタのみが消去されますか?それは奇妙に聞こえる。メタデータのコピーを作成し、それを返します。 – Fischermaen
既に組み込みのBitmapMetadataのクローンメソッドを試しましたが、運はありません –