我正在尝试开发一个Ionic Progressive Web应用程序(PWA),该应用程序使用Ionic Native Qrcode Scanner插件https://ionicframework.com/docs/native/qr-scanner/扫描QR Code。 在手机的浏览器中,开始进行二维码扫描时,需要一段时间,但过一会儿会在控制台上返回错误:
core.js:1449 ERROR RangeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': Out of memory at ImageData creation
at getCurrentImageData (plugin.min.js:571)
at thisScanCycle (plugin.min.js:693)
at t.invokeTask (polyfills.js:3)
at Object.onInvokeTask (core.js:4751)
at t.invokeTask (polyfills.js:3)
at r.runTask (polyfills.js:3)
at e.invokeTask (polyfills.js:3)
at i.isUsingGlobalCallback.invoke (polyfills.js:3)
at n (polyfills.js:3)
另一个错误:
Uncaught Error: This source format is not supported in your environment, you need to pass an image buffer with width and height
在真实计算机(在我的情况下为MacBook Pro)的浏览器中运行的相同代码有效,并且当在浏览器中失败的同一部手机上作为Android应用程序执行时,该代码也有效。 另一个奇怪的事情是,您需要距离很多(40cm)才能扫描QR,而不是使用Android应用程序扫描几厘米。 我的猜测是,相机以两种不同的方式进行了初始化,并且在移动浏览器中返回的图像过大并导致内存故障。
准系统代码可以在这里找到:https://github.com/mottolini/ionic-pwa-qr