На некоторых.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 файлами.
Любые идеи приветствуются :)