问题标签 [zxing.net]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
149 浏览

c# - 在英特尔 NUC NUC7CJYH 上使用 ~100% CPU 使用率的 WPF QR 解码应用程序的优化

我一直在研究一个 WPF,它解码用户持有网络摄像头的 QR 码。该应用程序运行良好,在我的开发机器上运行良好(Core i7 3770 CPU,NVidia Quadro K4200 GPU 上最多 23% 的 CPU 和 4% 的 GPU 使用率)但是当我在机器上安装并运行它时,它将被使用(英特尔 NUC NUC7CJYH)应用程序的 CPU 使用率 > 94%,导致机器上的使用率为 100%。

目前,该应用程序会扫描用户的二维码两次——第一次是员工的二维码,第二次是他们从事的项目编号的二维码。该应用程序使用 ZXing.Net 解码 QR 码,并使用 AForge.Net 访问网络摄像头。

我已经运行了 VS Profiler,这是结果的屏幕截图: VS Profiler Output

根据 VS Profiler 的结果,有 4 个方法调用使用了最多的 CPU 时间,大概我应该关注:

  • videoSource_NewFrame:获取在 VideoCaptureDevice(AForge.Video.DirectShow 类的一部分)中呈现的每一帧,并将其显示在名为 imgSource 的 Image 控件中。这使用了约 10.56% 的总 CPU 时间(3745 毫秒)

    /li>
  • timer_Tick:该方法是一个DispatcherTimer Tick EventHandler,每隔1秒调用一次。这用于在 lblTime 控件中显示当前时间,它使用了约 9.56% 的 CPU 时间(3389 毫秒)

    /li>
  • qrTimer_Tick:另一个 DispatcherTimer Tick EventHandler。此方法每 3 秒调用一次,并在每个间隔开始扫描 QR 码。它正在使用 ~5.52% (1959ms)

    /li>
  • 对 ZXing.Net 的 Decode 方法的外部调用。这使用了总 CPU 时间的 5.34%(1895 毫秒)

我不确定如何优化代码。我已经查看了为两个 DispatcherTimer 中的每一个设置 DispactherPriority,但在测试中这对应用程序的 CPU 使用率没有影响,并且会干扰每个 DispatcherTimer 的间隔。我还尝试将我在 qrTimer_Tick 方法中配置的 3 个 BarcodeReader 选项更改为 false,这产生了大约 1% 的改进。但是,我认为这可以忽略不计,因为它取决于用户将 QR 码放在相机前的速度以及 qrTimer_Tick 是否已经触发等因素。

有什么我想念的吗?难道仅仅是该应用程序压倒了它运行的 NUC 机器吗?

编辑 在遵循 kennyzx 和 lerthe61 的建议后,我设法将 NUC NUC7CJYH 上的应用程序 CPU 使用率降低到峰值时的约 58%。最大的好处是删除了每秒调用 timer_Tick 事件处理程序的 DispatcherTimer 对象。在我进行此更改后不久运行 VS Profiler 显示我的开发机器上的峰值 CPU 使用率为 18%,这是在应用程序启动后不久,必须自行运行。

在 lerthe61 的输入之后,我查看了我对 MemoryStream 和 Bitmap 对象的使用。videoSource_NewFrame 方法现在如下所示:

我现在在 qrTimer_Tick 方法中使用了 lock 来锁定来自网络摄像头的当前捕获的图像:

尽管我使用了锁,但该应用程序偶尔会抛出错误“对象当前正在其他地方使用”。我对代码的重构在删除 timer_Tick 之上对应用程序的 CPU 使用效率影响不大,所以我可以保持原样,但这显然效率较低。

0 投票
0 回答
1498 浏览

c# - ZXing .Net - 无法解码/读取图像中的任何条形码

我正在尝试使用 ZXing .Net 解码从相机拍摄的图像中的条形码,但它不适用于我尝试的任何图像。

这是我目前正在使用的代码:

我尝试过将 AutoRotate 和 TryInverted 设置为 true,并且尝试过使用 PossibleFormats。

以下是我尝试解码的一些条形码图像:

1:https ://imgur.com/yPkDNRM

2:https ://imgur.com/bNKzh73 (#1特写)

3:https ://imgur.com/DJ1lcAa

4:https ://imgur.com/Q3nN6Do

5:https ://imgur.com/e8JbpmV (#4特写)

6:https ://imgur.com/pCEj9Iu

7:https ://imgur.com/Q3qlVDP

#6 和 #7 是GitHub 项目上提供的示例图像。有更多的样本不起作用,但其中许多确实起作用。

谁能帮我让它正常工作?或者帮助我理解为什么它不适用于我自己的图像?

0 投票
1 回答
1389 浏览

c# - 如何在 Xamarin 表单中与其他 UI 元素一起使用 ZXing.Net 扫描仪?

我正在查看Xamarin.Forms 的 ZXing.net示例,它使用仅代码方法来扫描条形码。

我以这个问题为灵感来获取以下代码,但我不完全确定如何在使用 Prism 时管理扫描事件。

我的问题是,我如何设计一个页面,以便我可以捕获 OnScanResult,如示例中所示(复制如下)

0 投票
3 回答
6175 浏览

c# - ZXing QrCode 渲染器异常与 .Net Core 2.1

我想使用 ZXing(0.16.4) 创建一个二维码,但我遇到了以下异常,

System.InvalidOperationException:“您必须设置渲染器实例。”

几乎相同的代码适用于 .Net Framework 4.6.1

这是我的代码

0 投票
1 回答
680 浏览

xamarin.forms - 导航返回时带有 ZXing BarcodeImageView 的 Xamarin Forms (Prism) 崩溃

System.ObjectDisposedException: Cannot access a disposed object. Object name: 'Android.Widget.ImageView'.当我从包含 ZXing BarcodeImageView 和标签的视图返回时,我的应用程序崩溃了IsVisible="{Binding BindMe, Converter={converter:BoolConverter}}"

当我从 Xamarin.Forms 2.5 转到 3.2.x 时,引入了这个问题

软件包版本:

PrismContentPage(用于导航按钮)

棱镜内容页面

MainPage(包含ZXing和标签)

MainPageViewModel

值转换器

单声道堆栈跟踪

0 投票
1 回答
134 浏览

zxing.net - ZXing.BarcodeReader 代码不解码条码

此条码:

样本条码

不会解码。该图像有什么问题,它不会解码。

这个与其他数千个确实解码的图像不同,因为我必须修复它被剪切的原始 .tif 文件,因为它已损坏。我通过将其转换为 .pdf 并返回 .tif 来修复它。

0 投票
0 回答
1709 浏览

java - ZXing 条码扫描(code128 格式)在 Xamarin Forms 中不起作用

我们使用 ZXING 库来扫描 xamarin 表单应用程序的条形码,并且工作正常。

但现在条形码-code128 格式存在问题,因为它不扫描条形码(内容长度 - 19 个字符)。附上条码供参考。

在此处输入图像描述

我们使用 Zxing 版本 - 2.4.1(最新稳定版)。

我们使用了以下代码,但它不适用于 Android 和 iOS 平台。

请就解决问题提出建议/提供您的意见。

0 投票
1 回答
504 浏览

c# - 将并非所有 dll 与 ILMerge 合并

是否可以合并不是全部,而只是一些参考 dll 与ILMerge? 我有两个参考 -ZxsignDirectShowLib. 我ILMerge只是做了DirectShowLib

文件zxing.dllzxing.presentation.dll放置在aa.exe. 调用 zxing 包时出现异常:

是否有可能以某种方式进行管理ILMerge以避免出现此类错误?

0 投票
1 回答
79 浏览

c# - 为什么我不能 ILMerge Zxing?

尝试 ILMerge 包含 Zxing.NET 包的项目:

得到错误:

为什么我会收到此错误?这是什么意思?如何解决?

0 投票
2 回答
522 浏览

xamarin - 应用程序认证失败:此应用程序类型不支持 ws2_32.dll 中的 API FreeAddrInfoEx

我创建了一个非常简单的 Xamarin Forms 应用程序,它使用ZXing.Net.MobileHttpClient(应用程序扫描条形码/QR 码并将其发送到服务器)。此应用程序已在 App Store 和 Play Store 中成功发布,但在将其上传到 Microsoft Store 时,认证失败,并在“支持的 API 测试”部分中的每个架构(x86、x64、ARM、ARM64)上显示以下消息:

此应用程序类型不支持 ws2_32.dll 中的 API FreeAddrInfoEx。MyApp.UWP.dll 调用此 API。

我不知道是什么原因造成的,但我怀疑 ZXing,因为这是我之前没有在已发布的应用程序中使用的唯一第三方库。
有谁知道我该如何解决这个问题?