16-битная проверка BMP - PullRequest
       33

16-битная проверка BMP

3 голосов
/ 28 февраля 2010

Я разрабатываю сценарий с использованием 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).

Ответы [ 2 ]

2 голосов
/ 28 февраля 2010

Я не уверен, что правильно вас понял (английский является моим вторым языком), но если вам нужно проверить, является ли файл 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.

1 голос
/ 28 февраля 2010

Вы должны прочитать данные файла и сравнить их со спецификацией формата BMP .

Есть три способа работы с двоичными файлами в VBScript:

  1. Использование компонента ADODB. Этот метод ограничен. Вы можете найти статью об этом в VBScript Read Binary File .
  2. Вы можете написать свой собственный COM-компонент и вызвать его из скрипта. Я сделал быстрый поиск в Google и нашел несколько готовых компонентов, которые предлагают эту функцию.
  3. Вы также можете установить ImageMagick и использовать его для идентификации BMP. Это может быть излишним для ваших целей.
...