2010-02-28 88 views
3

我正在開發使用VBScript的腳本,我需要驗證輸入文件爲16位BMP。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

我不確定我是否正確(英語是我的第二語言),但如果您需要檢查一個文件是否爲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的一部分。

另請參閱WIA documentation MSDN上。

+0

我得到這個錯誤:'ActiveX組件不能創建對象'Wia.ImageFile'',我忘了說這需要與Windows CE(通過NSBasic)兼容。 – 2010-02-28 18:10:12

+1

很可能您沒有註冊wiaaut.dll庫(請參閱答案末尾的註釋)。我不知道Windows CE是否支持WIA。 – Helen 2010-02-28 19:01:05

1

您將不得不閱讀文件數據並將其與BMP format specification進行比較。

有三種方法,我知道的VBScript中的二進制文件的工作:

  1. 利用ADODB組件。這種方法是有限的。你可以在VBScript Read Binary File找到關於它的文章。
  2. 您可以編寫自己的COM組件並從腳本調用它。我做了一個快速的Google search,發現一些現成的組件提供這種功能。
  3. 您也可以安裝ImageMagick並用它來識別BMP。儘管如此,這可能是過度的。