Я успешно использовал InPlaceBitmapMetadataWriter для записи ключевых слов на многие фотографии, сделанные многими камерами, в том числе, когда мне нужно расширить заполнение метаданными. Однако для фотографий, сделанных последними камерами, метод TrySave всегда возвращает false для ключевых слов. Кто-нибудь знает, почему это может быть и как я могу решить это?
using (Stream jpgFileStream = File.Open(tempPath, FileMode.Open, FileAccess.ReadWrite))
{
// BitmapCacheOption.None tells the decoder to delay decoding until encoding. The JPEG
// encoder understands that the input was a JPEG and just copies over the image bits without decompressing
// and recompressing them to perform a lossless operation.
BitmapDecoder jpgDecoder = BitmapDecoder.Create(jpgFileStream, BitmapCreateOptions.None, BitmapCacheOption.None);
if (jpgDecoder.Frames[0] != null && jpgDecoder.Frames[0].Metadata != null)
{
InPlaceBitmapMetadataWriter metadataJpgWriter = jpgDecoder.Frames[0].CreateInPlaceBitmapMetadataWriter();
metadataJpgWriter.SetQuery("System.Keywords", Keywords.ToArray());;
if (metadataJpgWriter.TrySave())
{
traySaveSuccessful = true;
}
}
}