2012-03-04 38 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など他の方法でサイズを取得することができます。

ビット深度プロパティは、ファイルを右クリックしても使用できますが、拡張プロパティには表示されません。

更新別のオプションは、COMを使用しないように適切な.NETを使用することです:

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ピクセルフォーマットプロパティは、あなたにビット深度を提供します。

$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の初心者ですので、COMの代わりに.NETを使用することをお勧めします。 Wia.ImageFileでは、私のニーズに興味のあるIsIndexedPixelFormat、IsAlphaPixelFormat、IsExtendedPixelFormat、IsAnimatedも見つかりました。私はSystem.Drawingでそれらを見つけることができませんでした。あなたの答えをありがとう、これは非常に感謝しています。エティエンヌ。 – Etienne

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が役立つかもしれません –

関連する問題