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 验证的主要内容,如果未能解决你的问题,请参考以下文章

BMP图片分析

求js代码。验证输入的数据是:4-16位字符,英文、数字、下划线的组合。

16位bmp文件中RGB555转RGB565算法

用C语言读取16位bmp图片的每个像素的信息~

php验证密码 必须为6-16位字母数字符号组合, 正则表达式 着急,在线等

求PHP用户名注册验证正则表达式(6-16位字符,字母开头,只包含字母数字下划线)可支持中文