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

.NET 9 MAUI Android中使用Community Toolkit CameraView拍照返回空PNG的问题求助

.NET 9 MAUI Android中使用Community Toolkit CameraView拍照返回空PNG的问题求助

大家好,我在做.NET 9 MAUI的Android项目时碰到了个棘手的问题:用MAUI Community Toolkit的CameraView组件时,不管是真机还是模拟器,预览画面都正常显示,但点击拍照按钮后,得到的却是一张格式有效但完全空白的PNG图片,而且全程没有任何错误提示。

想请教下各位,怎么才能正确拍摄照片并获取到有效的字节数组呢?

以下是我的相关代码:

XAML代码

xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
    Color="Transparent">

    <Border Stroke="Gray" StrokeThickness="2" Padding="20"
            StrokeShape="RoundRectangle 15" BackgroundColor="white">

        <VerticalStackLayout Spacing="15" WidthRequest="350"  HorizontalOptions="Fill">
            <toolkit:CameraView x:Name="Camera"
                            BackgroundColor="Transparent"
                            VerticalOptions="Fill"
                            HorizontalOptions="Fill"/>
            <HorizontalStackLayout Spacing="10" HorizontalOptions="Center">
                <Button Text="Capture" BackgroundColor="Green" TextColor="White" Clicked="OnCaptureClicked"/>
                <Button Text="Cancel" BackgroundColor="Red" TextColor="White" Clicked="OnCancelClicked"/>
            </HorizontalStackLayout>
        </VerticalStackLayout>

    </Border>
</toolkit:Popup>

C#代码

private readonly TaskCompletionSource<byte[]?> _completionSource = new();

public CapturePhotoPopup()
{
    InitializeComponent();

    Closed += (object? sender, PopupClosedEventArgs e) =>
    {
        Camera.StopCameraPreview();
        _completionSource.TrySetResult(null);
    };
}

private async void OnCaptureClicked(object sender, EventArgs e)
{
    var photo = await Camera.CaptureAsync();
    if (photo != null)
    {
        using var stream = await photo.OpenReadAsync();
        using var ms = new MemoryStream();
        await stream.CopyToAsync(ms);
        
        //ms.ToArray() contains a valid empty PNG image.
        
        _completionSource?.SetResult(ms.ToArray());
    }
    else
    {
        _completionSource?.SetResult(null);
    }

    Close();
}

备注:内容来源于stack exchange,提问作者NTDLS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:58:03