16-Bits BMP Validación
-
23-09-2019 - |
Pregunta
Estoy desarrollando un guión con VBScript y necesito para validar el archivo de entrada como de 16 bits BMP.
En el momento de mi guión es la siguiente:
Const OverwriteExisting = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\16bmp.bmp" , "D:\test.bmp", OverwriteExisting
Pero ¿Cómo puedo validar el archivo de entrada como BMP de 16 bits?
PS:. Recuerde que necesito que esto sea compatible con mi sitio y Windows CE (voy a desarrollar un programa para que el uso de NSBasic)
Solución
No estoy seguro de que llegué a la derecha (Inglés es mi segunda lengua), pero si es necesario comprobar si un archivo es una imagen de 16 bits BMP (y no verifica los píxeles reales), se puede hacer uso de de imágenes de Windows (WIA) objetos de secuencias de comandos. He aquí un ejemplo:
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
Este script requiere que usted tiene la wiaaut.dll biblioteca instalado y registrado en su ordenador; si no lo tiene, puede descargarlo como parte de la WIA SDK .
WIA documentación en MSDN.
Otros consejos
tendría que leer los datos del archivo y compararlo con el BMP especificación de formato .
Hay tres maneras que conozco para el trabajo con los archivos binarios en VBScript:
- Utilización del componente ADODB. Este método es un poco limitado. Se puede encontrar un artículo sobre él en VBScript Leer binario archivo .
- Se puede escribir su propio componente COM y llamarlo desde el guión. Hice una rápida búsqueda de Google y encontró algunas ya hechas componentes que ofrecen esta funcionalidad.
- También podría instalar ImageMagick y lo utilizan para identificar el BMP. Eso podría ser excesiva para sus propósitos sin embargo.