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

如何让.NET MAUI相机识别旋转的条码?

解决.NET MAUI Camera.MAUI设置AutoRotate后条码识别失效问题

当你直接新建BarCodeOptions实例并仅设置AutoRotate = true时,会覆盖控件默认的条码格式配置——默认情况下PossibleFormats会被设为空集合,导致相机没有启用任何条码格式的识别能力,因此无法检测到条码。

两种可行的解决方法:

方法一:基于默认配置修改(推荐)

直接在默认的BarCodeOptions上修改AutoRotate属性,保留原有支持的条码格式:

public ScansionaProdotto()
{
    InitializeComponent();

    // 基于默认选项开启自动旋转,保留所有默认支持的条码格式
    cameraView.BarCodeOptions.AutoRotate = true;
}

方法二:显式指定需要识别的条码格式

如果需要自定义支持的条码类型,可新建BarCodeOptions并显式声明PossibleFormats:

using ZXing;

public ScansionaProdotto()
{
    InitializeComponent();

    cameraView.BarCodeOptions = new()
    {
        AutoRotate = true,
        // 添加你需要识别的条码格式,示例包含常见类型
        PossibleFormats = new List<BarcodeFormat>
        {
            BarcodeFormat.EAN_13,
            BarcodeFormat.CODE_128,
            BarcodeFormat.QR_CODE,
            BarcodeFormat.UPC_A
        }
    };
}

修改后的完整后台代码(以方法一为例)

public partial class ScansionaProdotto : ContentPage
{
    public ScansionaProdotto()
    {
        InitializeComponent();
        cameraView.BarCodeOptions.AutoRotate = true;
    }

    private void cameraView_CamerasLoaded(object sender, EventArgs e)
    {
        if(cameraView.Cameras.Count > 0)
        {
            cameraView.Camera = cameraView.Cameras.First();
            MainThread.BeginInvokeOnMainThread(async () =>
            {
                await cameraView.StopCameraAsync();
                await cameraView.StartCameraAsync();
            });
        }
    }

    private void cameraView_BarcodeDetected(object sender, Camera.MAUI.ZXingHelper.BarcodeEventArgs args)
    {
        MainThread.BeginInvokeOnMainThread(() =>
        {
            barcodeResult.Text = $"{args.Result[0].BarcodeFormat}: {args.Result[0].Text}";
        });
    }
}

这样修改后,相机既能识别旋转/倒置的条码,也能正常检测默认(或指定)的条码格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:03:27