Чтение "Теги людей", вставленные в Windows Live Photo Gallery

87
10

Фотогалерея дает вам возможность отметить лицо лица и применить к нему тег. Я понимаю, что он вставляет теги непосредственно в файл, а не сохраняет его в базе данных или сопутствующем метафайле в любом месте.


Итак, если это правда, какие данные он вставляет и как он отформатирован?

спросил(а) 2009-09-25T05:44:00+04:00 10 лет, 9 месяцев назад
1
Решение
86

Вот код, который я хотел. Это в С#.

        public void ReadWLPGRegions(string sourceFile)
{
string microsoftRegions = @"/xmp/RegionInfo/Regions";
string microsoftPersonDisplayName = @"/PersonDisplayName";
string microsoftRectangle = @"/Rectangle";
BitmapCreateOptions createOptions = BitmapCreateOptions.PreservePixelFormat | BitmapCreateOptions.IgnoreColorProfile;

using (Stream sourceStream = File.Open(sourceFile, FileMode.Open, FileAccess.Read))
{
BitmapDecoder sourceDecoder = BitmapDecoder.Create(sourceStream, createOptions, BitmapCacheOption.None);

// Check source has valid frames
if (sourceDecoder.Frames[0] != null && sourceDecoder.Frames[0].Metadata != null)
{
BitmapMetadata sourceMetadata = sourceDecoder.Frames[0].Metadata as BitmapMetadata;

// Check there is a RegionInfo
if (sourceMetadata.ContainsQuery(microsoftRegions))
{
BitmapMetadata regionsMetadata = sourceMetadata.GetQuery(microsoftRegions) as BitmapMetadata;

// Loop through each Region
foreach (string regionQuery in regionsMetadata)
{
string regionFullQuery = microsoftRegions + regionQuery;

// Query for all the data for this region
BitmapMetadata regionMetadata = sourceMetadata.GetQuery(regionFullQuery) as BitmapMetadata;

if (regionMetadata != null)
{
if (regionMetadata.ContainsQuery(microsoftPersonDisplayName) &&
regionMetadata.ContainsQuery(microsoftRectangle))
{
Console.Writeline( regionMetadata.GetQuery(microsoftRectangle).ToString()));
Console.WriteLine(regionMetadata.GetQuery(microsoftPersonDisplayName).ToString()));
}

}
}
}
}
}
}

ответил(а) 2009-09-28T01:17:00+04:00 10 лет, 9 месяцев назад
55

Когда возможно, в фотоальбоме Windows Live используется XMP для записи метаданных в файлы изображений. Подробнее см. Метаданные и Фотогалерея Windows Vista.

ответил(а) 2009-09-25T11:44:00+04:00 10 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема