BitmapMetadata:清除一些属性

本文关键字:属性 清除 BitmapMetadata | 更新日期: 2023-09-27 18:12:20

我正在处理这段代码:内部方法调用元数据属性全部填充;但是在用户代码中,它们中的大多数都是空的。为什么会有这种行为?

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;

你可以看到所有的属性都在那里,但是Subject:

        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:清除一些属性

当超出使用范围时,BitmapDecoder将被处置。检查return meta行上的调试器元,您将看到。