16-Битная проверка BMP
-
23-09-2019 - |
Вопрос
Я разрабатываю скрипт с использованием 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).
Решение
Я не уверен, что правильно вас понял (английский - мой второй язык), но если вам нужно проверить, является ли файл 16-разрядным BMP-изображением (и не проверять фактические пиксели), вы можете воспользоваться объектами сценариев Windows Image Acquisition (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 на MSDN.
Другие советы
Вам пришлось бы прочитать данные файла и сравнить их с Спецификация формата BMP.
Я знаю три способа работы с двоичными файлами в VBScript:
- Используя компонент ADODB.Этот метод в некотором роде ограничен.Вы можете найти статью об этом по адресу VBScript Читает Двоичный файл.
- Вы могли бы написать свой собственный COM-компонент и вызвать его из скрипта.Я сделал быстрый Поиск в Google и нашел несколько готовых компонентов, которые предлагают эту функциональность.
- Вы также можете установить Магия изображений и используйте его для идентификации BMP.Однако это может быть излишеством для ваших целей.