В некоторых файлах .JPG (предварительный просмотр EPS, созданных Adobe Illustrator) в Windows 7 InPlaceBitmapMetadataWriter.TrySave() возвращает true после некоторых вызовов SetQuery(), но ничего не делает.InPlaceBitmapMetadataWriter.TrySave() возвращает true, но ничего не делает
Пример кода:
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.
Любые идеи приветствуются :)
TrySave() возвращает _true_! Но ничего не делает. Таким образом, нет способа узнать, записаны ли метаданные или нет. – mephisto123
Lazo, нет метода сохранения для кодировщика в .NET 4. – Roger