Как читать QR-код прямо с мобильной камеры с помощью ZXing [ASP.Net WebForm] - PullRequest
5 голосов
/ 23 апреля 2019

В настоящее время я работаю над медицинским проектом, который состоит из базы данных пациентов.Я использовал zxing для генерации QR-кода каждый раз, когда пациент добавляется в запись, и 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, которая прекрасно работает.

На моей странице сканирования у меня есть две функции: либо пользователь нажимает на идентификатор пациента, который просматривается в dataTable, который перенаправляет их на страницу просмотра пациента,или у пользователя есть возможность использовать свою мобильную камеру.

Код для чтения 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>

Проблема в том, что камера на самом деле не сканирует / не делает снимок, она просто работает как объектив.Есть ли способ заставить его читать и преобразовывать код для получения идентификатора пациента, а затем автоматически перенаправлять пользователя на страницу пациента?

Заранее благодарим вас за поддержку

1 Ответ

1 голос
/ 24 апреля 2019

Я закончил тем, что включил плагин 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.

Я такжеВспомнил, что камеры, когда я пытался запустить веб-сайт на своем мобильном телефоне, отображали пустой экран, это произошло потому, что у веб-сайта не было подтвержденного сертификата SSL, что означает, что сайт по-прежнему был HTTP, а не HTTPS.который по какой-то причине позволяет мобильному устройству получать доступ к функции камеры. (https://www.pluralsight.com/guides/visual-studio-2017-resolving-ssl-tls-connections-problems-with-iis-express)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...