我正在使用 VBScript 开发脚本,并且需要将输入文件验证为 16 位 BMP。

当时我的脚本是这样的:

Const OverwriteExisting = TRUE

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\16bmp.bmp" , "D:\test.bmp", OverwriteExisting

但是如何验证输入文件是否为 16 位 BMP?



附:请记住,我需要它与我的站点和 Windows CE 兼容(我将使用 NSBasic 为其开发一个程序)。

有帮助吗?

解决方案

我不知道我得到了你的权利(英语是我的第二语言),但如果你需要检查,如果一个文件是一个16位BMP图像(而不是验证实际像素),你可以使用用Windows Image Acquisition(WIA)脚本对象。下面是一个例子:

Const wiaIDUnknown = "{00000000-0000-0000-0000-000000000000}"
Const wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"

Set oImg = CreateObject("Wia.ImageFile")

On Error Resume Next

oImg.LoadFile("C:\image.bmp")

If oImg.FormatID = wiaIDUnknown Then
  ' The file isn't an image file
Else
  Log.Message "Is BMP: " & (oImg.FormatID = wiaFormatBMP)
  Log.Message "Color depth: " & oImg.PixelDepth
End If

本脚本要求你拥有的 wiaaut.dll 的库安装并在计算机上注册;如果你没有它,你可以下载它的的 WIA SDK

也参见MSDN WIA文档

其他提示

您必须读取文件数据并将其与 BMP格式规范.

据我所知,可以通过三种方式在 VBScript 中处理二进制文件:

  1. 使用 ADODB 组件。这种方法有一定的局限性。您可以在以下位置找到有关它的文章 VBScript 读取二进制文件.
  2. 您可以编写自己的 COM 组件并从脚本中调用它。我做了一个快速的 谷歌搜索 并找到了一些提供此功能的现成组件。
  3. 您还可以安装 图像魔术师 并用它来识别 BMP。不过,这对于您的目的来说可能有点过分了。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top