Получите подробную информацию из файла .png в PowerShell. - PullRequest
4 голосов
/ 04 марта 2012

Как получить подробную информацию из определенного файла .png в PowerShell?Как размеры, глубина в битах и ​​размер.

Ответы [ 3 ]

10 голосов
/ 04 марта 2012

Вы можете получить большую часть этой информации из расширенных свойств файлов, таких как:

$path = 'D:\image.png'
$shell = New-Object -COMObject Shell.Application
$folder = Split-Path $path
$file = Split-Path $path -Leaf
$shellfolder = $shell.Namespace($folder)
$shellfile = $shellfolder.ParseName($file)

$width = 27
$height = 28
$Dimensions = 26
$size = 1

$shellfolder.GetDetailsOf($shellfile, $width)
$shellfolder.GetDetailsOf($shellfile, $height)
$shellfolder.GetDetailsOf($shellfile, $Dimensions)
$shellfolder.GetDetailsOf($shellfile, $size)

Вы также можете получить размер другими способами, такими как (Get-Item D:\image.png).Length / 1KB.

Похоже, что свойство глубины в битах не указано в расширенных свойствах, хотя оно доступно при щелчке файла правой кнопкой мыши.

Обновление Другой вариант - использовать собственно .NET, чтобы не использовать COM:

add-type -AssemblyName System.Drawing
$png = New-Object System.Drawing.Bitmap 'D:\image.png'
$png.Height
$png.Width
$png.PhysicalDimension
$png.HorizontalResolution
$png.VerticalResolution

Обновление 2 Свойство PixelFormat дает вам битовую глубину.

$png.PixelFormat

Свойство является перечислением возможных форматов. Вы можете просмотреть полный список здесь:

http://msdn.microsoft.com/en-us/library/system.drawing.imaging.pixelformat.aspx

Например, Format32bppArgb определяется как

Указывает, что формат составляет 32 бита на пиксель; 8 бит каждый используется для альфа, красного, зеленого и синего компонентов.

3 голосов
/ 04 марта 2012

Сценарист написал статью о получении метаданных файлов на основе Shell.Application https://blogs.technet.microsoft.com/heyscriptingguy/2008/08/14/hey-scripting-guy-how-can-i-find-files-metadata/

2 голосов
/ 04 марта 2012
  • Возможно, вы захотите использовать Модуль PowershellPack , содержащий get-image:

    PS D:\> import-module psimagetools
    PS D:\> get-item .\fig410.png | get-image
    FullName              : D:\fig410.png
    FormatID              : {B96B3CAF-0728-11D3-9D7B-0000F81EF32E}
    FileExtension         : png
    FileData              : System.__ComObject
    ARGBData              : System.__ComObject
    Height                : 450
    Width                 : 700
    HorizontalResolution  : 96,0119934082031
    VerticalResolution    : 96,0119934082031
    PixelDepth            : 32
    IsIndexedPixelFormat  : False
    IsAlphaPixelFormat    : True
    IsExtendedPixelFormat : False
    IsAnimated            : False
    FrameCount            : 1
    ActiveFrame           : 1
    Properties            : System.__ComObject
    
  • или вы можете использовать Wia.ImageFile напрямую (как это делает функция get-image) следующим образом:

    PS D:\> $image  = New-Object -ComObject Wia.ImageFile
    PS D:\> $image.loadfile("D:\fig410.png")
    PS D:\> $image
    
    FormatID              : {B96B3CAF-0728-11D3-9D7B-0000F81EF32E}
    FileExtension         : png
    FileData              : System.__ComObject
    ARGBData              : System.__ComObject
    Height                : 450
    Width                 : 700
    HorizontalResolution  : 96,0119934082031
    VerticalResolution    : 96,0119934082031
    PixelDepth            : 32
    IsIndexedPixelFormat  : False
    IsAlphaPixelFormat    : True
    IsExtendedPixelFormat : False
    IsAnimated            : False
    FrameCount            : 1
    ActiveFrame           : 1
    Properties            : System.__ComObject
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...