.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
相关产品推荐
相关产品推荐

