如何使用 ZXing [ASP.Net WebForm] 直接从手机摄像头读取二维码
How to read a QR code directly from a mobile camera using ZXing [ASP.Net WebForm]
我目前正在从事一个包含患者数据库的医疗项目。我用zxing在每记录一个患者时生成一个二维码,二维码中包含患者的ID。
生成代码如下
//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 上查看的患者 ID,这会将他们重定向到查看患者页面,或者用户可以使用他们的移动相机。
读取二维码并翻译的代码如下
//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,然后自动将用户重定向到患者页面?
在此先感谢您的支持
我最终启用了 WebRTC javascript 插件以启用使用 phone 上的摄像头的面板。 (本教程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)
我目前正在从事一个包含患者数据库的医疗项目。我用zxing在每记录一个患者时生成一个二维码,二维码中包含患者的ID。
生成代码如下
//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 上查看的患者 ID,这会将他们重定向到查看患者页面,或者用户可以使用他们的移动相机。
读取二维码并翻译的代码如下
//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,然后自动将用户重定向到患者页面?
在此先感谢您的支持
我最终启用了 WebRTC javascript 插件以启用使用 phone 上的摄像头的面板。 (本教程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)