2011-02-01 6 views
3

은 내가 VBScript를 스크립트를하고 난이 .tif 파일의 디렉토리를 통해 씹을 필요가있다. 각 파일에 대해 필자는 파일이 가로 또는 세로로 비례하는지 결정해야합니다. 기본적으로 각 파일의 이미지 크기를 가져올 수 있어야합니다. 그래서 저는 jpg 나 bmp 파일에서 이런 종류의 정보를 추출하기 위해 파일 헤더를 읽는 사람들의 예를 보았습니다. 누구든지 tiff 파일의 크기를 추출하기 위해 동일한 작업을 수행 했습니까?tiff 파일의 이미지 크기는 어떻게 결정합니까?

+0

또 어떤 스크립트 수행해야합니까? 이 독립형 스크립트가 있다면, 당신은 VBScript로 TIFF 파일을 읽는 것보다 뭔가 다른 (.NET, 파워 쉘)에 포팅 오프 훨씬 더 좋을 것 같아. 이전에는 ServerObjects에서 ImgSize.dll이라는 무료 구성 요소가 있었지만이 구성 요소는 중단되었으며 더 이상 사용할 수 없습니다. –

답변

9

VBScript를, 당신은 두 가지 방법으로 이미지 크기를 확인할 수 있습니다

  1. WIA 자동화 라이브러리 (download link, MSDN documentation, an 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 개 픽셀을
    높이 : 3,248 픽셀

    그렇다면 일반 숫자가 필요하면 반환 된 문자열에서 추출해야합니다.

    또한이 방법에는 또 다른 문제가 있습니다. 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

관련 문제