3

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

当时我的剧本是这样的:

Const OverwriteExisting = TRUE

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

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



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

4

2 回答 2

2

我不确定我是否正确(英语是我的第二语言),但如果您需要检查文件是否为 16 位 BMP 图像(而不是验证实际像素),您可以使用 Windows Image采集 (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 文档

于 2010-02-28T17:39:49.597 回答
1

您必须读取文件数据并将其与BMP 格式规范进行比较。

我知道在 VBScript 中处理二进制文件的三种方法:

  1. 使用 ADODB 组件。这种方法有点局限。你可以在VBScript Read Binary File找到一篇关于它的文章。
  2. 您可以编写自己的 COM 组件并从脚本中调用它。我在Google 上进行了快速搜索,发现了一些提供此功能的现成组件。
  3. 您还可以安装ImageMagick并使用它来识别 BMP。不过,对于您的目的而言,这可能有点矫枉过正。
于 2010-02-28T15:23:36.847 回答