0
Когда я попытался написать метатеги в файле по ссылке https://drive.google.com/file/d/0BzSOSmEHZLIjNkFiSE5qQmFEdlE/view?usp=sharing use EditTags() метод У меня есть исключения (данные изображения генерировали переполнение во время обработки). Но когда я пытаюсь написать метатеги, для других jpg-файлов все правильно.Запись метатегов в файл
public void EditTags()
{
string imageFlePath = "d:\\Vatche-Swan-Solitaire-Engagement-and-Wedding-Rings-in-18k-White-Gold-from-Whiteflash_41313_18301_f.jpg";
BitmapDecoder decoder = null;
BitmapFrame bitmapFrame = null;
BitmapMetadata metadata = null;
FileInfo originalImage = new FileInfo(imageFlePath);
if (System.IO.File.Exists(imageFlePath))
{
using (Stream jpegStreamIn = System.IO.File.Open(imageFlePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
decoder = new JpegBitmapDecoder(jpegStreamIn, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);
}
bitmapFrame = decoder.Frames[0];
metadata = (BitmapMetadata)bitmapFrame.Metadata;
Collection<System.Windows.Media.ColorContext> gdf = new Collection<System.Windows.Media.ColorContext>();
ReadOnlyCollection<System.Windows.Media.ColorContext> dgfd = new ReadOnlyCollection<System.Windows.Media.ColorContext>(gdf);
if (bitmapFrame != null)
{
BitmapMetadata metaData = (BitmapMetadata)bitmapFrame.Metadata.Clone();
if (metaData != null)
{
metaData.SetQuery("System.Keywords", "Test");
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapFrame, bitmapFrame.Thumbnail, metaData, bitmapFrame.ColorContexts));
originalImage.Delete();
using (Stream jpegStreamOut = System.IO.File.Open(imageFlePath, FileMode.CreateNew, FileAccess.ReadWrite))
{
encoder.Save(jpegStreamOut);
}
}
}
}
}
Ну, это, скорее всего, вызвано Adobe Photoshop и как он конструирует изображения. Возможно, вам понадобится Google немного, чтобы увидеть, есть ли обходные пути. – Hozikimaru