以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 知道二维码图片的base64数据(字符串值),能否转换为qrcode的字符串值? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=148559) |
-- 作者:pc005637 -- 发布时间:2020/4/10 9:56:00 -- 知道二维码图片的base64数据(字符串值),能否转换为qrcode的字符串值? 知道二维码图片的base64数据(字符串值),能否转换为qrcode的字符串值? 之前论坛上有个zxing.dll控件,是识别jpg图片的。能否利用? http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=44384
[此贴子已经被作者于2020/4/10 9:56:25编辑过]
|
-- 作者:pc005637 -- 发布时间:2020/4/10 10:04:00 -- 目前思路是,先转化成jpg图片,再用dll来识别。但有问题。 问题就是只能一条一条记录识别,是可以成功的。但用 for each r as row in t.rows 这个循环,就会报错。 .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2020.1.19.19 错误所在事件:窗口,电子健康卡日志,Button2,Click 详细错误信息: GDI+ 中发生一般性错误。 代码如下: Dim t As Table = Tables(e.Form.Name & "_FSCard") If t.Rows.Count > 0 Then For Each r As Row In t.Rows If r("qrcode") > "" Then Else If r("img") > "" Then Dim bs As Byte() = Convert.FromBase64String(r("img")) Dim stream As System.IO.Stream = New System.IO.MemoryStream(bs) Dim bmp As System.Drawing.Bitmap = New System.Drawing.Bitmap(stream) Dim fl As String = ProjectPath & "fscard.jpg" bmp.save(fl) Application.DoEvents() If FileSys.FileExists(fl) Then Dim img As Image = Image.FromFile(fl) \'图片地址哦! Dim bmap As Bitmap bmap = New Bitmap(img) Dim source As New RGBLuminanceSource(bmap, bmap.Width, bmap.Height) Dim bitmap As com.google.zxing.BinaryBitmap = New com.google.zxing.BinaryBitmap(New com.google.zxing.common.GlobalHistogramBinarizer(source)) Dim asd As new com.google.zxing.MultiFormatReader Dim result As com.google.zxing.Result = asd.decode(bitmap) r("qrcode") = result.Text End If End If End If Application.DoEvents() Next Else MessageBox.Show("当前表无记录!") End If |
-- 作者:有点蓝 -- 发布时间:2020/4/10 10:25:00 -- 试试 Dim t As Table = Tables(e.Form.Name & "_FSCard") If t.Rows.Count > 0 Then For Each r As Row In t.Rows If r("qrcode") > "" Then Else If r("img") > "" Then Dim bs As Byte() = Convert.FromBase64String(r("img")) Dim stream As System.IO.Stream = New System.IO.MemoryStream(bs) Dim bmap As System.Drawing.Bitmap = New System.Drawing.Bitmap(stream) Dim source As New RGBLuminanceSource(bmap, bmap.Width, bmap.Height) Dim bitmap As com.google.zxing.BinaryBitmap = New com.google.zxing.BinaryBitmap(New com.google.zxing.common.GlobalHistogramBinarizer(source)) Dim asd As new com.google.zxing.MultiFormatReader Dim result As com.google.zxing.Result = asd.decode(bitmap) r("qrcode") = result.Text bmap.dispose GC.Collect() End If End If Application.DoEvents() Next Else MessageBox.Show("当前表无记录!") End If [此贴子已经被作者于2020/4/10 10:25:39编辑过]
|
-- 作者:pc005637 -- 发布时间:2020/4/10 10:41:00 -- 偶有一条记录报错,请问是什么原因? .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2020.1.19.19 错误所在事件:窗口,电子健康卡日志,Button2,Click 详细错误信息: 引发类型为“com.google.zxing.ReaderException”的异常。 如何被避免?
|
-- 作者:有点蓝 -- 发布时间:2020/4/10 11:00:00 -- 组件自己的异常,试试try掉:http://www.foxtable.com/webhelp/topics/2070.htm …… Try Dim bs As Byte() = Convert.FromBase64String(r("img")) Dim stream As System.IO.Stream = New System.IO.MemoryStream(bs) Dim bmap As System.Drawing.Bitmap = New System.Drawing.Bitmap(stream) Dim source As New RGBLuminanceSource(bmap, bmap.Width, bmap.Height) Dim bitmap As com.google.zxing.BinaryBitmap = New com.google.zxing.BinaryBitmap(New com.google.zxing.common.GlobalHistogramBinarizer(source)) Dim asd As new com.google.zxing.MultiFormatReader Dim result As com.google.zxing.Result = asd.decode(bitmap) r("qrcode") = result.Text bmap.dispose GC.Collect() Catch ex As ExceptionEnd Try ……
|