You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Linux函数(.NET8)中ZXing+ImageSharp解码QR码遇方法缺失异常

解决方案:Azure Linux Function App (.NET 8) 中QR码解码问题

一、修复包版本不匹配问题

你当前的ZXing.Net(0.16.10)和ZXing.Net.Bindings.ImageSharp(0.16.15)版本不一致,这是导致方法缺失错误的核心原因。结合SixLabors.ImageSharp 3.x的版本特性,建议调整为以下统一版本的NuGet包引用:

<PackageReference Include="SixLabors.ImageSharp" Version="3.1.8" />
<PackageReference Include="ZXing.Net" Version="0.16.15" />
<PackageReference Include="ZXing.Net.Bindings.ImageSharp" Version="0.16.15" />

二、正确的解码代码实现

调整包版本后,可使用以下两种稳定的解码方式:

方式1:使用BarcodeReaderGeneric

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using ZXing;
using ZXing.ImageSharp;

public string DecodeQrCode(Stream imageStream)
{
    using var image = Image.Load<Rgba32>(imageStream);
    var reader = new BarcodeReaderGeneric
    {
        Options = new DecodingOptions
        {
            PossibleFormats = new[] { BarcodeFormat.QR_CODE },
            TryHarder = true // 提升模糊、低对比度QR码的解码成功率
        }
    };

    var result = reader.Decode(image);
    return result?.Text ?? "未识别到QR码";
}

方式2:手动创建亮度源并使用泛型BarcodeReader

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using ZXing;
using ZXing.ImageSharp;

public string DecodeQrCode(Stream imageStream)
{
    using var image = Image.Load<Rgba32>(imageStream);
    var luminanceSource = new ImageSharpLuminanceSource<Rgba32>(image);
    var reader = new BarcodeReader<Rgba32>
    {
        Options = new DecodingOptions
        {
            PossibleFormats = new[] { BarcodeFormat.QR_CODE }
        }
    };

    var result = reader.Decode(luminanceSource);
    return result?.Text ?? "未识别到QR码";
}

三、其他QR码解码库推荐

如果ZXing组合仍存在适配问题,可尝试以下纯.NET库:

  • QRCoder:轻量级纯.NET库,无需依赖第三方图像处理组件,支持.NET 8,用法简洁,性能稳定。
  • ZXing.Net.MultiFormatReader:ZXing的官方扩展,专注多格式条码解码,兼容性更强,可直接配合ImageSharp使用。

内容的提问来源于stack exchange,提问作者tonsteri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:34:58