16位BMP文件验证

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开发程序)。
2个回答

2

我不确定我是否理解正确(英语是我的第二语言),但如果您需要检查文件是否为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

此脚本需要在您的计算机上安装并注册库;如果您没有它,可以在WIA SDK中下载它。
另请参阅MSDN上的WIA文档

我遇到了这个错误: ActiveX 组件无法创建对象 'Wia.ImageFile',同时我忘记说明需要与 Windows CE(via NSBasic) 兼容。 - Nathan Campos
1
很可能您没有注册wiaaut.dll库(请参见答案末尾的注释)。我不知道Windows CE是否支持WIA。 - Helen

1

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

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

  1. 使用ADODB组件。这种方法有点受限。您可以在VBScript读取二进制文件中找到相关文章。
  2. 您可以编写自己的COM组件并从脚本中调用它。我快速进行了Google搜索,发现了一些提供此功能的现成组件。
  3. 您还可以安装ImageMagick并使用它来识别BMP。但对于您的目的来说,这可能过于复杂。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接