Вы можете использовать что-то вроде ниже, чтобы получить все свойства, которые вам нужны из файла jpg, и воздействовать на возвращаемое значение Orientation
$imgloc = 'D:\' #'# dummy comment to restore syntax highlighting in SO
# the various System.Photo.Orientation values
# See: https://docs.microsoft.com/en-us/windows/win32/properties/props-system-photo-orientation
# https://docs.microsoft.com/en-gb/windows/win32/gdiplus/-gdiplus-constant-property-item-descriptions#propertytagorientation
$orientation = 'Unknown', 'Normal', 'FlipHorizontal', 'Rotate180', 'FlipVertical', 'Transpose', 'Rotate270', 'Transverse', 'Rotate90'
Get-ChildItem -Path $imgloc -Filter '*.jpg' | ForEach-Object {
$img = [System.Drawing.Image]::Fromfile($_.FullName)
# return the properties
$value = $img.GetPropertyItem(274).Value[0]
[PsCustomObject]@{
'Path' = $_.FullName
'Width' = $img.Size.width
'Height' = $img.Size.Height
'Orientation' = $orientation[$value]
}
}
Это вернется как пример
Path Width Height Orientation
---- ----- ------ -----------
D:\test.jpg 2592 1456 Normal
D:\test2.jpg 2336 4160 Normal
D:\test3.jpg 2560 1920 Rotate270
, а если Orientation
равно Rotate270
или Rotate90
, вы можете поменять значения ширины и высоты.
Редактировать
Как прокомментировал JosefZ , значения ориентации также объявляются в классе перечисления [System.Drawing.RotateFlipType]
следующим образом:
Name Value
---- -----
Rotate180FlipXY 0
RotateNoneFlipNone 0
Rotate90FlipNone 1
Rotate270FlipXY 1
Rotate180FlipNone 2
RotateNoneFlipXY 2
Rotate270FlipNone 3
Rotate90FlipXY 3
RotateNoneFlipX 4
Rotate180FlipY 4
Rotate90FlipX 5
Rotate270FlipY 5
Rotate180FlipX 6
RotateNoneFlipY 6
Rotate270FlipX 7
Rotate90FlipY 7
со значениями в диапазоне от 0 до 7, и ни одно из них не отличаетсятогда как значения, которые вы получаете, используя $img.GetPropertyItem(274).Value[0]
, варьируются от 1 до 8 и совпадают со значениями для System.Photo.Orientation