C#-使用ZXing.Net解码png QR代码

时间:2019-06-24 13:50:56

标签: c# qr-code zxing.net

我正在使用ZXing.Net库(0.16.4)编码和解码QR码。我从这里获得了有关如何解码二维码的参考: C# with ZXing.Net: Decoding the QR code

代码:

Bitmap image = (Bitmap)Bitmap.FromFile(@"file.png");
byte[] bytes = File.ReadAllBytes(@"file.png");            
try
{
   using (image)
   {
      LuminanceSource source;
      source = new BitmapLuminanceSource(image);
      BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
      Result result = new MultiFormatReader().decode(bitmap);
      if (result != null)
      {
         //... code found
         var data = result.Text.Split(Environment.NewLine);
      }
      else
      {
         //... no code found
      }
     }
   }
   catch (Exception exception)
   {
      throw new Exception("Cannot decode the QR code " + exception.Message);
   }

此处代码在BitmapLuminanceSource上引发编译时错误

  

找不到类型或名称空间名称'BitmapLuminanceSource'   (您是否缺少using指令或程序集引用?

我已经在这里安装了ZXing.Net软件包,我无法理解,为什么此类参考在这里不起作用。

为了使代码正常工作,我从此处从git复制了此类: https://github.com/micjahn/ZXing.Net/blob/master/Source/lib/BitmapLuminanceSource.cs

2 个答案:

答案 0 :(得分:0)

我在Xamarin.Android上遇到了同一问题,我在解决方案上安装了NuGet:https://www.nuget.org/packages/ZXing.Net/

我将确保对包文件的所有引用均正确。 如果您使用的是Visual Studio,此操作已为您完成,只需确保添加Zxing.Net NuGet包,因为Zxing.Net.Mobile/Zxing.Net.Forms没有BitmapLuminanceSource方法。

答案 1 :(得分:0)

该类在.NET Core库的库中不可用(但很快就会出现)。 ZXing.Net的作者micjahn建议利用此处列出的一些绑定https://www.nuget.org/packages?q=ZXing.Net.Bindings 我选择了ZKWeb,初始化代码如下:

var bitMap = (System.DrawingCore.Bitmap)System.DrawingCore.Bitmap.FromStream(stream);
var source = new ZXing.ZKWeb.BitmapLuminanceSource(bitMap);
var binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));

原始答案是here。 其他一些information