web-dev-qa-db-ja.com

ZXing [ASP.Net WebForm]を使用してモバイルカメラから直接QRコードを読み取る方法

私は現在、患者データベースで構成される医療プロジェクトに取り組んでいます。患者がレコードに追加され、QRコードに患者のIDが含まれるたびに、zxingを使用してQRコードを生成しました。

生成コードは以下の通りです

 //GENERATE QRCODE
        private void GenerateCode(string patientIdString)
        {           

            var writer = new BarcodeWriter();
            writer.Format = BarcodeFormat.QR_CODE;
            var result = writer.Write(patientIdString);
            string path = Server.MapPath("~/images/" + patientIdString + ".jpg");
            var barcodeBitmap = new Bitmap(result);

            using (MemoryStream memory = new MemoryStream())
            {
                using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite))
                {
                    barcodeBitmap.Save(memory, ImageFormat.Jpeg);
                    byte[] bytes = memory.ToArray();
                    fs.Write(bytes, 0, bytes.Length);
                }
            }
            patientQRCode.Visible = true;
            patientQRCode.ImageUrl = "~/images/"+ patientIdString + ".jpg";
        }

このメソッドは、完全に正常に機能するAddPatient機能で呼び出されます。

私のスキャンページには2つの機能があります。ユーザーがdataTableで表示された患者のIDをクリックして、患者の表示ページにリダイレクトするか、ユーザーがモバイルカメラを使用する機能を持っています。

QRコードを読み取って翻訳するコードは以下の通りです

//READ CODE FROM QR IMAGE
        private void ReadQRCode()
        {
            var reader = new BarcodeReader();
            string filename = Path.Combine(Request.MapPath("~/images/"), "QRImage.jpg");
            //Detatch and decode the barcode inside the bitmap
            var result = reader.Decode(new Bitmap(filename));
            if (result != null)
            {
                lblQRCode.Text = "QR Code : " + result.Text;
            }
        }

また、モバイルユーザーがカメラを開く方法は次のとおりです。

        <p class="lead" style="text-align: center"><input class="btn btn-success btn-sm" type="file" accept="image/*" runat="server" capture="camera" /></p>

問題は、カメラが実際にスキャン/写真を撮っているのではなく、単にレンズとして機能していることです。患者IDを取得するためにコードを読み取って変換し、ユーザーを自動的に患者ページにリダイレクトする方法はありますか?

よろしくお願いします

8
zadders

結局、WebRTC javascriptプラグインを有効にして、電話のカメラを使用するパネルを有効にしました。 (このチュートリアル https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Taking_still_photos#Using_specific_devices

そして、最初のセクションでは前面カメラのみを使用できるため、この例を使用して背面カメラを有効にしました。 ( https://webrtc.github.io/samples/src/content/devices/input-output/

これにより、画像のキャプチャに必要な望ましい結果が得られました。

次に、ZXingを使用して必要なQRを作成し、WebRTCカメラでキャプチャされている画像を読み取りました。

また、携帯でWebサイトを実行しようとしたときに空白の画面が表示されるカメラは、WebサイトにSSL証明書が検証されていないため、サイトがHTTPではなくHTTPであることが判明したことも思い出しました。何らかの理由でモバイルがカメラ機能にアクセスできるようにするHTTPS。 ( https://www.pluralsight.com/guides/visual-studio-2017-resolving-ssl-tls-connections-problems-with-iis-express

3
zadders