schmich / instascan

HTML5 QR code scanner using your webcam
https://schmich.github.io/instascan/
MIT License
2.97k stars 863 forks source link

iOS 15 Cannot Detect QRCode !!!! #280

Open Nakinthorn opened 2 years ago

Nakinthorn commented 2 years ago

After my team update iOS 15 when open the camera to scan QR Code it not detect anything.....

i found some solution in other issue thread is advise to config Safari browser... but it not a solution!!!!! When my app publish i cannot tell every user to config their Safari browser

So, if anyone was found this issue before pls help

Thank...

DarrylIdle commented 2 years ago

I found that turning the phone landscape fixed the issue for me (may not be the situation for others). I think instascan is analyzing a squished frame/image that it can't recognize.

There might also be some combinations of experimental settings in Safari that could fix it but I haven't the time to screw around with it.

huangsong commented 2 years ago

edit scanner.js

    analyze() {
        if (!this.video.videoWidth) {
          return null;
        }

        //if (!this.imageBuffer) {
          let videoWidth = this.video.videoWidth;
          let videoHeight = this.video.videoHeight;

          this.sensorWidth = videoWidth;
          this.sensorHeight = videoHeight;
          this.sensorLeft = Math.floor((videoWidth / 2) - (this.sensorWidth / 2));
          this.sensorTop = Math.floor((videoHeight / 2) - (this.sensorHeight / 2));

          this.canvas.width = this.sensorWidth;
          this.canvas.height = this.sensorHeight;

          this.canvasContext = this.canvas.getContext('2d');
          this.imageBuffer = ZXing._resize(this.sensorWidth, this.sensorHeight);
          //return null;
        //}

fix this bug.

yuresko commented 2 years ago

@huangsong did your snippit resolve it? for me it still only defaults to landscape.

RileyIsOnGitHub commented 2 years ago

@yuresko let me know if this resolves your issue. I had no luck when trying it.

I'm hoping to hear back from @huangsong regarding my issue I posted yesterday that you responded to. Hopefully he'll be able help.

huangsong commented 2 years ago

@yuresko here is my test code. https://github.com/huangsong/instascan/tree/master/docs it work well on my test phone (iphone7p ios 15. 、ipadmin5 12.2, android 12 pixel3),I used the modification and compilation of the code of the master branch

sandervanschaik commented 2 years ago

@huangsong ... I had the same problem and found this issue via Google. I tried your solution, but it is not working on IOS 15.3.1 (Ipad Air and Iphone8). It remains only working in landscape and not in portrait.

Another bug is the front camera is working, the back camera is not working on both my IOS devices. But maybe I have to put this in another 'issue'.

agusbrand commented 2 years ago

Worked like a charm ✨ Thanks @huangsong !