16-bit BMP convalida
-
23-09-2019 - |
Domanda
sto sviluppando uno script utilizzando VBScript e ho bisogno di convalidare il file di input come-bit 16 BMP.
Al momento il mio script è in questo modo:
Const OverwriteExisting = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\16bmp.bmp" , "D:\test.bmp", OverwriteExisting
Ma come faccio a convalidare il file di input come un 16-bit BMP?
PS: ricordo che ho bisogno di questo per essere compatibile con il mio sito e Windows CE (io sviluppare un programma per esso usando NSBasic)
Soluzione
Non sono sicuro che ho ottenuto a destra (l'inglese è la mia seconda lingua), ma se avete bisogno di controllare se un file è un'immagine BMP a 16 bit (e non verifica i pixel effettivi), si può fare uso di l'immagine di Windows (WIA) oggetti di script. Ecco un esempio:
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
Questo script richiede di avere la wiaaut.dll biblioteca installato e registrato sul computer; se non lo avete, potete scaricarlo come parte della WIA SDK .
Si veda anche WIA documentazione su MSDN.
Altri suggerimenti
Si dovrà leggere i dati del file e confrontarlo con la BMP specifica del formato .
Ci sono tre modi che conosco per lavorare con i file binari in VBScript:
- Uso del componente ADODB. Questo metodo è di tipo limitato. Potete trovare un articolo su di esso a VBScript Leggi Binary File .
- Si potrebbe scrivere il proprio componente COM e chiamarlo dallo script. Ho fatto un rapido ricerca di Google e trovato alcuni ready-made componenti che offrono questa funzionalità.
- Si potrebbe anche installare ImageMagick e usarlo per identificare il BMP. Questo potrebbe essere eccessivo per i vostri scopi però.