Изменение свойств/метаданных файла

Я могу получить свойства/метаданные файла, вызвав Shell32.Folder.GetDetailsOf, но я не могу понять, как изменить эти атрибуты. Свойства, о которых я говорю, — это «расширенные сведения», такие как модель камеры и имя камеры для файлов изображений.


person rafale    schedule 31.08.2011    source источник
comment
К сожалению, это невозможно для изображений, поскольку данные EXIF ​​находятся в начале двоичного файла изображения и занимают фиксированное количество места.   -  person Brian Driscoll    schedule 31.08.2011
comment
Folder.GetDetailsOf - это метод vba, а не .NET. Вы отметили вопрос C#. Просьба уточнить.   -  person Oded    schedule 31.08.2011


Ответы (1)


ЕСЛИ вы действительно используете С#, тогда вы должны сделать Interop/PInvoke для вызова этого метода, поскольку это метод Shell...

Чтобы получить+установить информацию EXIF, вы можете использовать Image (хотя и не оптимальный), для стандартных атрибутов можно использовать FileInfo класс.

Очень хороший класс для работы с EXIF, включая исходный код, можно найти здесь.

person Yahia    schedule 31.08.2011
comment
Класс в вашей последней ссылке, безусловно, очень полезен, но не похоже, что в данный момент он может устанавливать информацию EXIF. Кроме того, почему класс Image не оптимален для установки EXIF? - person rafale; 01.09.2011
comment
AFAIK с использованием класса Image может привести к перезаписи файла изображения, что может произойти в зависимости от формата файла и т. д. возможная небольшая потеря качества... другой момент заключается в том, что он загружает изображение в память, что может быть проблемой производительности, если вы только хотите работать с данными EXIF... - person Yahia; 01.09.2011
comment
Похоже, что использование Image — мой единственный выбор на данный момент. Я не могу найти какие-либо другие библиотеки или классы, которые могут изменять информацию EXIF. - person rafale; 02.09.2011
comment
есть несколько коммерческих доступных, если это вариант, я мог бы дать вам несколько ссылок ... - person Yahia; 02.09.2011