Eu preciso decodificar uma pasta cheia de código QR de arquivos de imagem. Depois de muita pesquisa, finalmente encontrei uma biblioteca que funciona no Windows. Não é a minha escolha ideal (o Zbar não instala no Strawberry PERL como "... não posso incluir zbar e zbar.h" ... ou na minha conta on-line onde ele diz que precisa de um compilador C: funcional. Outras opções foi atualizado em anos, ou exigir outras bibliotecas, como DecodeQR requer OpenCV / compiladores etc, ou libdecodeqr que eu acho que precisa de um compilador em vez de Windows / Perl)
Não se preocupe: pergunta chegando em breve.
Pelo menos o Zbar para Windows parece estar contido em uma única pasta (portátil: dependente de caminho), embora eu não saiba se o instalador colocou arquivos no registro. Eu deveria adicionar neste ponto que - se baseado em Windows - o programa deve ser passado para outros usarem. Se eu conseguir uma versão para trabalhar no servidor, não importa quais arquivos eu tenho que instalar ... desde que funcionem!)
De qualquer forma ...
Isso está sendo executado a partir do VBScript. Eu consegui obter os arquivos de imagem em um objeto de pasta que eu reitero através de. Este é o meu código:
For Each f in PicFiles
Set out=objShell.Exec("C:\EventProc\Zbar\bin\zbarimg -D -q " &f)
tmp=out.StdOut.ReadAll
MsgBox(tmp)
Next
No jargão do Zbar, os flags significam (-D: Não exibe a imagem do código de barras decodificada) e (-q: mostra apenas a saída decodificada para a janela do console)
No momento, esse arranjo significa que a janela do console pisca e fecha rapidamente novamente em cada loop. (O shell não libera o valor para Stdout até que seja fechado) Isso pode ser "bastante irritante" ao passar por mais de 200 arquivos de imagem!
Eu tentei "Run" em vez de "Exec", mas é claro que não retorna nenhum valor para o Stdout ou para uma variável!
Eu tentei adicionar ", 0" depois de "& f" em uma tentativa de criar uma janela oculta ... mas depois
a) ou trata-o como parte do nome do arquivo e não pode renderizar -ou-
b) porque está oculto, nenhum valor é reportado ao StdOut
De qualquer forma, a string tmp está em branco.
Aqui está o que estou tentando alcançar:
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
** Não tenho problema para abrir / gravar arquivos. O problema é a janela piscando - a menos que haja uma opção completamente diferente