ZXing.Net 解码条形码给出错误 - 无法从 'System.Drawing.Bitmap' 转换为 'ZXing.LuminanceSource'

ZXing.Net decode barcode giving Error - Cannot convert from 'System.Drawing.Bitmap' to 'ZXing.LuminanceSource'

我正在使用 ZXing.Net 0.16.4.0 解码保存在 'wwwroot/qrr' 文件夹中的二维码文件,但出现编译时错误:

Cannot convert from 'System.Drawing.Bitmap' to 'ZXing.LuminanceSource'

我的代码:

string[] files = Directory.GetFiles("wwwroot/qrr");
foreach (string file in files)
{
    // create a barcode reader instance
    IBarcodeReader reader = new BarcodeReader();
    // load a bitmap
    var barcodeBitmap = (Bitmap)Image.FromFile("wwwroot/qrr/" + Path.GetFileName(file));

    // detect and decode the barcode inside the bitmap
    var result = reader.Decode(barcodeBitmap);
}

错误在最后一行代码:

 var result = reader.Decode(barcodeBitmap);

我的应用程序在 ASP.NET Core 中,我使用的是官方文档代码,但它们无法正常工作。请帮忙?

更新

我注意到 ZXing 包添加到 ASP.NET 核心应用程序后,ZXing.IBarcodeReader 缺少解码重载方法:

IBarcodeReader 只有 2 个解码方法重载:

Result Decode(byte[] rawRGB, int width, int height, RGBLuminanceSource.BitmapFormat format);
Result Decode(LuminanceSource luminanceSource);

但是当你在.Net 4.6.1 框架中安装这个包时,还有一种重载方法:

Result Decode(Bitmap barcodeBitmap);

一个包如何在不同的框架下给出不同的代码?

由于您使用的是 ASP.NET Core,我假设您已经添加了对 ZXing.Net.Bindings.CoreCompat.System.Drawing 包的引用。您需要更改代码如下:

string[] files = Directory.GetFiles("wwwroot/qrr");
foreach (string file in files)
{
    // create a barcode reader instance
    IBarcodeReader reader = new BarcodeReader();
    BarcodeReader reader = new BarcodeReader();
    // load a bitmap
    var barcodeBitmap = (Bitmap)Image.FromFile("wwwroot/qrr/" + Path.GetFileName(file));

    // detect and decode the barcode inside the bitmap
    var result = reader.Decode(barcodeBitmap);
}

注意这个.Decode()an extension method of IBarcodeReaderGeneric instead of the IBarcodeReader