16 位 BMP 验证
Posted
技术标签:
【中文标题】16 位 BMP 验证【英文标题】:16-Bits BMP Validation 【发布时间】:2010-02-28 14:35:31 【问题描述】:我正在使用 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 为其开发一个程序)。
【问题讨论】:
【参考方案1】:我不确定我是否正确(英语是我的第二语言),但如果您需要检查文件是否为 16 位 BMP 图像(而不是验证实际像素),您可以使用Windows 图像采集 (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 documentation。
【讨论】:
我收到了这个错误:ActiveX component can't create object 'Wia.ImageFile'
,我也忘了说这需要与 Windows CE 兼容(通过 NSBasic)。
很可能您没有注册 wiaaut.dll 库(请参阅答案末尾的注释)。我不知道Windows CE是否支持WIA。【参考方案2】:
您必须读取文件数据并将其与BMP format specification 进行比较。
我知道在 VBScript 中处理二进制文件的三种方法:
-
使用 ADODB 组件。这种方法有点局限。你可以在VBScript Read Binary File找到一篇关于它的文章。
您可以编写自己的 COM 组件并从脚本中调用它。我做了一个快速的Google search 并找到了一些提供此功能的现成组件。
您也可以安装ImageMagick 并使用它来识别BMP。不过,对于您的目的而言,这可能有点矫枉过正。
【讨论】:
以上是关于16 位 BMP 验证的主要内容,如果未能解决你的问题,请参考以下文章
求js代码。验证输入的数据是:4-16位字符,英文、数字、下划线的组合。