我正在使用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
答案 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。