yog*_*ing 4 c# qr-code barcode zxing asp.net-core
我正在使用ZXing.Net 0.16.4.0 解码保存在“wwwroot/qrr”文件夹中的二维码文件,但我收到编译时错误:
无法从“System.Drawing.Bitmap”转换为“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);
}
Run Code Online (Sandbox Code Playgroud)
错误出现在最后一行代码:
var result = reader.Decode(barcodeBitmap);
Run Code Online (Sandbox Code Playgroud)
我的应用程序位于 ASP.NET Core 中,我正在使用官方文档代码,但它们不起作用。请帮忙?
更新
我注意到,当 ZXing 包添加到 ASP.NET Core 应用程序时,它的 ZXing.IBarcodeReader 缺少 Decode 重载方法:
IBarcodeReader 只有 2 个解码方法重载:
Result Decode(byte[] rawRGB, int width, int height, RGBLuminanceSource.BitmapFormat format);
Result Decode(LuminanceSource luminanceSource);
Run Code Online (Sandbox Code Playgroud)
但是当你在.Net 4.6.1框架中安装这个包时,还有一种重载方法:
Result Decode(Bitmap barcodeBitmap);
Run Code Online (Sandbox Code Playgroud)
一个包如何在不同的框架中给出不同的代码?
由于您使用的是 ASP.NET Core,我假设您已经添加了对ZXing.Net.Bindings.CoreCompat.System.Drawing. 您需要更改您的代码如下:
string[] files = Directory.GetFiles("wwwroot/qrr");
foreach(文件中的字符串文件)
{
// 创建一个条形码读取器实例
IBarcodeReader 阅读器 = new BarcodeReader();
BarcodeReader 阅读器 = new BarcodeReader();
// 加载位图
var BarcodeBitmap = (Bitmap)Image.FromFile("wwwroot/qrr/" + Path.GetFileName(file));
// 检测并解码位图中的条形码
var result = reader.Decode(barcodeBitmap);
}
请注意,这.Decode()是一个扩展方法,IBarcodeReaderGeneric而不是IBarcodeReader
| 归档时间: |
|
| 查看次数: |
5672 次 |
| 最近记录: |