1

Мне нужно декодировать папку, полную QR-кода из файлов изображений. После МНОГО исследований я наконец нашел библиотеку, которая работает на Windows. Не мой идеальный выбор (Zbar не будет устанавливаться на Strawberry PERL как "... не может включать zbar и zbar.h" ... или на мою учетную запись онлайн, где он говорит, что ему нужен работающий компилятор C:. Другие параметры не обновлялись годами или требуют, чтобы другие библиотеки, такие как DecodeQR, требовали OpenCV / компиляторы и т.д. Или libdecodeqr, который, я думаю, нуждается в компиляторе, а не в Windows / Perl)

Не волнуйтесь: вопрос скоро появится.

По крайней мере, Zbar для Windows, кажется, содержится в одной папке (portable: путь зависит), хотя я не знаю, поместил ли установщик файлы в реестр. Я должен добавить в этот момент, что - если на основе Windows - программа должна быть передана другим для использования. Если я могу заставить версию работать на сервере, не имеет значения, какие файлы мне нужно установить ... при условии, что они работают!)

Тем не мение ...

Это выполняется из VBScript. Мне удалось поместить файлы изображений в объект папки, через который я затем повторяю. Это мой код:

For Each f in PicFiles
   Set out=objShell.Exec("C:\EventProc\Zbar\bin\zbarimg -D -q " &f)
   tmp=out.StdOut.ReadAll
   MsgBox(tmp)
Next  

На языке Zbar флаги означают (-D: не отображать декодированное изображение штрих-кода) и (-q: отображать только декодированный вывод в окно консоли)

В настоящее время это расположение означает, что окно консоли мигает открытым и снова быстро закрывается в каждом цикле. (Оболочка не возвращает значение в Stdout, пока не закроется) Это может быть "довольно раздражающим" при просмотре более 200 файлов изображений!

Я попробовал "Выполнить", а не "Exec", но, конечно, это не возвращает никакого значения Stdout или переменной!

Я попытался добавить «, 0» после «& f» в попытке создать скрытое окно ... но потом а) либо он обрабатывает его как часть имени файла и не может отобразить -или- б) потому что он скрыт, никакое значение не получает В любом случае сообщается StdOut, строка tmp пуста.

Вот что я пытаюсь достичь:

Open a file, and get DetailsA
   Read folder of images
        For
        "decodeQR" is code within image (ideally silently)
        Next
 Append "decodedQR |DetailsA" to an external file 

** У меня нет проблем с открытием / записью файлов. Проблема в мигающем окне - если нет совершенно другой опции

1 ответ1

0

Мне удалось разобраться. Мне не нужно было использовать цикл "для следующего"; Я просто сделал файл ref подстановочным знаком, и он сканирует все изображения jpg в папке. Затем я беру данные XML и читаю, чтобы найти имя файла кода pic / QR, который я записываю в файл.

Один проб. Благодаря exec, вы не можете скрыть окно консоли.

Вот используемый код Zbarimg:

xml_data=createobject("wscript.Shell").exec("C:\MobiEvent\Zbar\bin\zbarimg -D -q --xml C:\MobiEvent\AllPics\*.jpg").stdout.readall
test=Split(xml_data,vbLf)

-D останавливает отображение изображения штрих-кода, -q выводит информацию bacic и -xml экспортирует данные XML в STDOUT, который передается в "xml_data", который затем разделяется на массив, и я пролистываю его построчно, найдите QR-код ref / имя файла изображения, которые записаны в файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .