Это на самом деле довольно легко сделать, и ваше внутреннее представление о System.Drawing было на самом деле правильным:
Add-Type -Assembly System.Drawing
$input | ForEach-Object { [Drawing.Image]::FromFile($_) }
Сохраните это как Get-Image.ps1
где-нибудь на вашем пути, и тогда вы сможете его использовать.
Другой вариант - добавить к вашему $profile
следующее:
Add-Type -Assembly System.Drawing
function Get-Image {
$input | ForEach-Object { [Drawing.Image]::FromFile($_) }
}
, который работает почти так же. Конечно, добавьте такие причудливые вещи, как документация или что-то в этом роде.
Затем вы можете использовать это так:
gci -inc *.jpg -rec | Get-Image | ? { $_.Width -eq 1024 -and $_.Height -eq 768 }
Обратите внимание, что вы должны располагать объекты, созданные таким образом после их использования.
Конечно, вы можете добавить собственное свойство Dimension
, чтобы вы могли фильтровать по нему:
function Get-Image {
$input |
ForEach-Object { [Drawing.Image]::FromFile($_) } |
ForEach-Object {
$_ | Add-Member -PassThru NoteProperty Dimension ('{0}x{1}' -f $_.Width,$_.Height)
}
}