2011-02-01 4 views
3

私はvbscriptスクリプトを持っており、.tifファイルのディレクトリを調べる必要があります。それぞれのファイルについて、そのファイルが横長か縦長かのどちらであるかを判断する必要があります。基本的には、各ファイルのイメージのサイズを取得できる必要があります。ですから、私はjpgやbmpファイルからこのような情報を抽出するために、ファイルファイルヘッダを読んでいる人々の例を見てきました。誰もがtiffファイルのディメンションを抽出するために同じことをしましたか?TIFFファイルの画像の大きさはどうやって決めるのですか?

+0

あなたのスクリプトには他に何が必要ですか?スタンドアロンスクリプトの場合は、VBScriptでTIFFファイルを読み込もうとするよりも、.NET(PowerShell)以外のものに移植するほうがはるかに優れています。以前はServerObjectsからImgSize.dllという名前の無料コンポーネントがありましたが、これは廃止され、もはや入手できません。 –

答えて

9

VBScriptでは、次の2つの方法で画像の大きさを決定することができます。

  1. WIAオートメーションライブラリdownload linkMSDN documentationan excellent Hey, Scripitng Guy! article on the subject)を使用します。対応する拡張ファイルのプロパティを読み取るためにGetDetailsOfメソッドを使用して

    Set oImage = CreateObject("WIA.ImageFile") 
    oImage.LoadFile "C:\Images\MyImage.tif" 
    
    WScript.Echo "Width: " & oImage.Width & vbNewLine & _ 
          "Height: " & oImage.Height 
    


  2. :あなたはwiaaut.dllライブラリを登録したら、次の簡単なコードを使用することができます。これはネイティブのWindowsスクリプティング方法であるため、外部ライブラリは不要です。しかし、コードがある長い:

    外形寸法:2464 X 3248
    幅:

    Const DIMENSIONS = 31 
    CONST WIDTH = 162 
    CONST HEIGTH = 164 
    
    Set oShell = CreateObject ("Shell.Application") 
    Set oFolder = oShell.Namespace ("C:\Images") 
    Set oFile = oFolder.ParseName("MyImage.tif") 
    
    strDimensions = oFolder.GetDetailsOf(oFile, DIMENSIONS)  
    strWidth = oFolder.GetDetailsOf(oFile, WIDTH) 
    strHeigth = oFolder.GetDetailsOf(oFile, HEIGTH) 
    
    WScript.Echo "Dimensions: " & strDimensions & vbNewLine & _ 
          "Width: "  & strWidth  & vbNewLine & _ 
          "Height: "  & strHeigth 
    

    このスクリプトは次のように出力2464個のピクセルを
    身長:3248個のピクセル

    そうであれば単純な数値が必要な場合は、返された文字列からそれらを抽出する必要があります。

    また、this answerで説明したように、プロパティインデックス(スクリプトの冒頭の定数)はWindowsのバージョンによって異なります。上記のスクリプトはWindows 7用ですが、別のWindowsバージョンを使用している場合や、スクリプトを別のWindowsバージョンで使用する場合は、バージョン固有のインデックスを使用する必要があります。利用可能なプロパティインデックスの最も完全なリストはhereです。

+0

シェルメソッドは私が探していたものでした。ありがとう、ヘレン! –

+1

素晴らしいです、ありがとう! (ところで、私はすでにVistaとWin7のマシンにwiaaut.dllを持っていたので、スクリプトはちょうどすぐに働いた)。 –

+0

プロパティインデックスは、異なるイメージファイルタイプでも異なるように見えます。> _ < –

1

私はそれを使用することをお勧めしますAtalasoft's DotImage Photoその強力な&は無料です!しかし、それは.NETパッケージなので、動作させるにはRegasm Magicを実行します。開始する前にUse vb.net in VBScriptをチェックしてください。

ここに、寸法を取得するために必要なコードを示します。

Public Function GetHeight(path As String) As Integer 

    Using stm As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read) 
     Dim decoder As New TiffDecoder() 
     If Not decoder.IsValidFormat(stm) Then 
      Throw New Exception("not a TIFF") 
     End If 
     Dim image As AtalaImage = decoder.Read(stm, Nothing) 
     Return image.Height 
      ' Return image.Width --- To return the Width. 

    End Using 
End Function 
+1

Dim情報をImageInfo = decoder.GetImageInfo(stm、Nothing)として扱うほうが、はるかに少ないメモリを割り当てることができます。また、TIFFはマルチページ形式であり、dotImage PhotoFreeは複数ページのドキュメントをサポートしていませんが、dotImage PhotoProやdotImageドキュメントイメージングは​​サポートしています。 – plinth

関連する問題