0

我正在尝试使用 Zxing.net ( https://github.com/micjahn/ZXing.Net )在 PowerShell 中解码 QR 码

此页面上有一个 HowTo,但我无法以这种方式使用它: https ://github.com/micjahn/ZXing.Net/wiki/Using-ZXing.Net-with-Powershell

每次我运行脚本时,我都会收到以下错误消息:

Cannot find an overload for "Decode" and the argument count: "1".
At C:\Users\ww\Desktop\reader.ps1:13 char:1
+ $result = $reader.Decode($bitmap)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

我的整个脚本是:

Add-Type -Path "C:\Users\ww\Desktop\zxing.net\lib\net45\zxing.dll"
$reader = New-Object -TypeName ZXing.BarcodeReader
$reader.Options.TryHarder=1
# set TryHarder option to true, other options can be set the same way
$bitmap = [System.Drawing.Bitmap]::FromFile("C:\Users\ww\Desktop\abc.bmp")
$result = $reader.Decode($bitmap)
$bitmap.Dispose()
$result.Text

我只知道 Java 中的“重载”,我可以为同一个函数使用不同的参数,但在这种情况下,这对我来说毫无意义(我不是一个很有经验的程序员)。

是否有可能我使用了错误的 .dll?我从https://www.nuget.org/packages/ZXing.Net/0.16.5下载了 Nuget-Package ,然后通过 7-Zip 解压缩。我尝试了各种 .dll(net40、netcoreapp3.0、portable、net20、...),但结果始终相同。

我还发现了这个 Github 线程,似乎很容易让一切正常工作。

谁能给我一个提示,我的实施有什么问题?谢谢!

4

1 回答 1

0

原样的脚本应该可以正常工作。确保您使用的 .dll 用于系统上安装的适当版本的 .NET。例如,我有 .NET 版本 4.8,所以我使用 .dll 来获取可用的最高版本,即 4.7。我的文件路径是 C:\...\ZXing.Net.0.16.5.0\net4.7\zxing.dll 。

Add-Type -Path "C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Zxing\zxing.dll"
$reader = New-Object -TypeName ZXing.BarcodeReader
$reader.Options.TryHarder = 1 # set TryHarder option to true, other options can be set the same way
$bitmap = [System.Drawing.Bitmap]::FromFile("C:\Users\testUser\Pictures\QR.png")
$result = $reader.Decode($bitmap)
$bitmap.Dispose()
$result.Text

控制台输出:https ://www.youtube.com/watch?v=oHg5SJYRHA0

于 2020-01-14T19:01:45.407 回答