如何使用 VBScript 在 DPI 中获取图像分辨率?
例如
Res= GET "M.jpg" Resolution
If Res > 100
Echo "GOODQ"
最佳答案
您可以使用 HorizontalResolution
获取图像 DPI和 VerticalResolution
WIA.ImageFile
的属性脚本对象:
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 的方法。但是代码会更长而且有点乱,因为:
- 水平分辨率 和垂直分辨率 文件属性的索引在不同的 Windows 版本上是不同的(有关详细信息,请参阅 this page 和 this my answer)。
扩展文件属性将 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
关于windows - 通过 VBScript 获取图像分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21832712/