windows - 通过 VBScript 获取图像分辨率

标签 windows vbscript

如何使用 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 pagethis 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/

相关文章:

mysql - 你如何解决这个错误 : MySQL ODBC Access denied for user 'ODBC' @'localhost' ?

vbscript - 顺序执行批处理文件

windows - 引用 Windows 用户/用户名文件夹

c# - 检测远程桌面连接的来源

windows - 如何为 Windows Phone 构建 ionic 应用程序?

vb.net - 使用命令行将 *.xls 或 *.xlsx 文件转换为管道分隔的 .csv 文件

loops - VBscript错误处理-移至 “For Each”循环中的下一项

c# - 带有卡在 GetContext() 上的 SSL 证书的 HttpListener

windows - 每个 Windows 操作系统的注册表中的 CurrentVersion 值

c++ - 如何使用 C++ win32 API 为 Active Directory 中的单个属性设置和获取多个值(数组值)?