Comments 11
> размер исходного файла и нового могут значительно отличаться, это связано с разными способами и параметрами сжатия изображения

А вот это очень плохо. Самое правильное было бы не трогать данные картинки вообще, меняя только с EXIF. Не знаю, насколько это сложно, но утилиты на вырезанию/редактированию существуют. Я побайтово сравнивал — меняется только заголовок.
В моем случае это было к лучшему, так как брал большие фото из камеры, а потом выкладывал в инет. На глаз изменений качества изображения не видно, размер, для примера, менялся с 4.82МБ до 3.39МБ. Хотя, конечно, правильно бы было само изображение не трогать
>> (BitmapMetadata)decoder.Frames[0].Metadata.Clone();

А что лежит во Frames[1]? Всегда настороженно относился к такого вида константам в коде.
Обычно, на один jpeg-файл приходится по одному кадру, соответственно и Frames состоит всего из одного элемента. Frames[1] просто не существует.
Обычно?

Спецификации JPEG не копал, но никогда не видел jpg-анимашку.
Я имел в виду что стандартные JPEG состоят только из одного кадра. Если умудритесь сделать нечто свое — то уже не в счет. JpegBitmapEncoder игнорит все остальные кадры, кроме нулевого. А вот TIFF и GIF — можно, просто для всех этих типов используется один и тот же класс BitmapEncoder.
Вообще для работы с EXIF уже давно есть замечательная тулза ExifTool и даже GUI к ней, с геотегами и гугл-картами в частности.
И? Уже давно есть куча графических редакторов, но продолжают создаваться новые. Существует куча медиаплееров, но пишутся все новые. И, вообще, сейчас большинство программ имеет аналоги, если не клоны, но тем не менее у программистов есть работа. А какой смысл писать прогу «Hello World!», если можно скачать готовую.
Я не хотел сказать, что ваш труд напрасен. Но упомянуть про ExifTool мне кажется уместным уже хотя бы потому, что на сегодня это самая продвинутая и полная реализация работы с EXIF-тегами. Фил (автор) и другие участники как раз подчас и являются источником «толковой информации по данным вопросам», которой, к слову, не так уж и мало. При этом ExifTool кросс-платформенный, т.к. написан на Perl, и многолетняя история также говорит в его пользу.

С другой стороны, надо думать, что удобный и полноценный (в смысле охватываемого набора всевозможных тегов, камер и форматов файлов — а это не самая легкая задача) C# модуль будет востребован. Но в таком случае странно, что вы не упомянули про уже существующие начинания, ссылки на которые легко выдает поиск по stackoverflow (1, 2).

И все же я сомневаюсь, что любой из этих проектов дотягивает до уровня ExifTool (например, про враперы вокруг exiv2 можно сразу забыть, т.к. exiv2 до сих пор не умеет работать с, к примеру, CR2).
Хотел бы добавить один момент
В конце статьи есть полезная ссылка на документацию от Microsoft, где описаны возможные запросы
Но там не указано еще одно поле — «Object Name», хотя некоторые программы предпочитают именно это поле в качестве названия изображения
metadata.SetQuery(@"/app13/irb/8bimiptc/iptc/Object Name", Title);
Only those users with full accounts are able to leave comments. Log in, please.