2012-03-04 1 views

ответ

7

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

$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.

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

Update Другой вариант заключается в использовании .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 

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

$png.PixelFormat 

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

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

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

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

+0

Спасибо за ваш ответ. Я, наконец, решил использовать Wia.ImageFile. с помощью которых я могу получить более простые данные (например, бит-глубина). – Etienne

+0

@Etienne Я добавил еще один вариант. Вы можете использовать .NET и избегать использования COM. –

+0

Благодарим вас за последнее обновление. Я новичок в PowerShell, поэтому, если я понимаю, что лучше использовать .NET вместо COM? С Wia.ImageFile я также нашел IsIndexedPixelFormat, IsAlphaPixelFormat, IsExtendedPixelFormat и IsAnimated, которые интересны для моих нужд. Мне не удалось найти их с помощью System.Drawing. Большое спасибо за ваш ответ, это очень ценится. Etienne. – Etienne

3

автор сценариев написал статью о получении файлов метаданных на основе Shell.Application http://blogs.technet.com/b/heyscriptingguy/archive/2008/08/13/how-can-i-find-files-metadata.aspx

+0

Спасибо за эту статью, очень интересно. В моем случае я предпочитаю использовать Wia.ImageFile, более простой для моих нужд. Спасибо за ваш ответ. – Etienne

+0

@Etienne *** Wia.ImageFile *** is _COM_ – Kiquenet

2
  • Вы можете захотеть использовать PowershellPack Module, который содержит получить образ:

    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 
    
+0

Не найдена ссылка, какие-либо альтернативы? – Kiquenet

+0

Нет официальной ссылки, но https://github.com/thlorenz/settings/tree/master/WindowsPowerShell/Modules может помочь –

Смежные вопросы