Как я могу получить программный доступ к полю «Дата съемки» изображения или видео с помощью powershell? - PullRequest
11 голосов
/ 26 июля 2011

Я пытаюсь конвертировать кучу картинок и видео, но когда я конвертирую его в новый формат, я потерял свойства исходного файла. Я хотел бы иметь возможность прочитать свойство «Дата получения» из старого файла и обновить его в новом, используя powershell.

Ответы [ 2 ]

11 голосов
/ 26 июля 2011

Я не могу проверить это сейчас (у меня нет изображений с данными XIF, но я думаю, что это должно работать:

[reflection.assembly]::LoadWithPartialName("System.Drawing")
$pic = New-Object System.Drawing.Bitmap('C:\PATH\TO\SomePic.jpg')
$pic.GetPropertyItem(36867).Value
3 голосов
/ 24 декабря 2011

Как правило, вы можете получить доступ к любому расширенному свойству для файла, отображаемого в проводнике, с помощью метода оболочки GetDetailsOf. Вот короткий пример, адаптированный из другого ответа :

$file = Get-Item IMG_0386.jpg
$shellObject = New-Object -ComObject Shell.Application
$directoryObject = $shellObject.NameSpace( $file.Directory.FullName )
$fileObject = $directoryObject.ParseName( $file.Name )

$property = 'Date taken'
for(
  $index = 5;
  $directoryObject.GetDetailsOf( $directoryObject.Items, $index ) -ne $property;
  ++$index ) { }

$value = $directoryObject.GetDetailsOf( $fileObject, $index )


Однако, согласно комментариям к другому вопросу , не существует универсального механизма для установки этих свойств. Класс System.Drawing.Bitmap, о котором упомянул EBGreen , будет работать для изображений, но, боюсь, я также не знаю опции .NET для видеофайлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...