InPlaceBitmapMetadataWriter. TrySave () возвращает true, но ничего не делает

На некоторых.JPG файлах (предварительные просмотры EPS, сгенерированные Adobe Illustrator) в Windows 7 InPlaceBitmapMetadataWriter. TrySave () возвращает true после некоторого SetQuery () вызовы, но ничего не делает.

Пример кода:

BitmapDecoder decoder;
BitmapFrame frame;
BitmapMetadata metadata;
InPlaceBitmapMetadataWriter writer;
decoder = BitmapDecoder.Create(s, BitmapCreateOptions.PreservePixelFormat | BitmapCreateOptions.IgnoreColorProfile, BitmapCacheOption.Default);
frame = decoder.Frames[0];
metadata = frame.Metadata as BitmapMetadata;
writer = frame.CreateInPlaceBitmapMetadataWriter();
try {
    writer.SetQuery("System.Title", title);
    writer.SetQuery(@"/app1/ifd/{ushort=" + exiftagids[0] + "} ", (title + '\0').ToCharArray());
    writer.SetQuery(@"/app13/irb/8bimiptc/iptc/object name", title);
    return writer.TrySave();
}
catch {
    return false;
}

Образец изображения

Можно воспроизвести проблему (если у Вас есть Windows 7) путем загрузки образца изображения и использования этого примера кода для установки заголовка на этом изображении. Изображение имеет достаточно комнаты для метаданных - и этот пример кода хорошо работает на моем WinXP. Тот же код хорошо работает на Win7 с другими.JPG файлами.

Любые идеи приветствуются :)

6
задан mephisto123 2 May 2010 в 21:10
поделиться