如何使用VBScript在DPI中获得图像分辨率?
例如
Res= GET "M.jpg" Resolution
If Res > 100
Echo "GOODQ"
答案 0 :(得分:3)
您可以使用HorizontalResolution
脚本对象的VerticalResolution
和WIA.ImageFile
属性来获取图像DPI:
Set objImage = CreateObject("WIA.ImageFile")
objImage.LoadFile "C:\M.jpg"
If objImage.HorizontalResolution > 100 Then
Log.Message "GOODQ (" & objImage.HorizontalResolution & " DPI)"
End If
为了完整起见,Windows Vista及更高版本还有另一种解决方案 - 使用Folder.GetDetailsOf
方法从扩展文件属性中读取图像DPI。但代码会更长,更麻烦,因为:
扩展文件属性将DPI作为字符串返回,如 240 dpi ;您可能需要将其转换为数字。
' For Windows 7
Const HORIZONTAL_RESOLUTION = 161
Const VERTICAL_RESOLUTION = 163
Dim objShell : Set objShell = CreateObject("Shell.Application")
Dim objFolder : Set objFolder = objShell.Namespace("C:\MyFolder")
Dim objFile : Set objFile = objFolder.ParseName("M.jpg")
Dim strDpi : strDpi = objFolder.GetDetailsOf(objFile, HORIZONTAL_RESOLUTION) ' Returns DPI as a string like "240 dpi"
Dim dpi : dpi = ToInt(strDpi)
If dpi > 100 Then
Log.Message "GOODQ (" & dpi & " DPI)"
End If
' Extracts a number from a string, e.g. "240 dpi" -> 240
' NB: no error handling
Function ToInt(ValueStr)
Dim objRE : Set objRE = New RegExp
objRE.Pattern = "\d+"
Dim colMatches : Set colMatches = objRE.Execute(ValueStr)
ToInt = CLng(colMatches(0).Value)
End Function
答案 1 :(得分:1)
您可以使用WIA Automation库执行此类操作。
Set objImage = CreateObject("WIA.ImageFile")
objImage.LoadFile "M.jpg"
If objImage.Width > 100 And objImage.Height > 100 Then
WScript.Echo "GOODQ" & vbNewLine & "Width: " & _
objImage.Width & vbNewLine & _
"Height: " & objImage.Height
End If