C# 图像未显示inXamarin表单ImageCircle插件

C# 图像未显示inXamarin表单ImageCircle插件,c#,visual-studio,xamarin,xamarin.forms,visual-studio-2019,C#,Visual Studio,Xamarin,Xamarin.forms,Visual Studio 2019,我正在使用Xamarin表单开发Android应用程序。我在表单上添加了ImageCircle插件来显示配置文件图像。我想用手机摄像头拍摄的照片更新它。所以要做到这一点,我有这些代码 1.XAML 我也尝试了以下方法,但没有成功: 设置Source=file.Path 使用字节数组 在xaml中{Binding ImageSource}并在代码隐藏中设置ImageSource 上面的代码运行得很好,我可以在监视窗口中看到字节数组/流。但仍然没有显示图像 请注意: 我的方法是老式的WinForm方

我正在使用Xamarin表单开发Android应用程序。我在表单上添加了ImageCircle插件来显示配置文件图像。我想用手机摄像头拍摄的照片更新它。所以要做到这一点,我有这些代码

1.XAML 我也尝试了以下方法,但没有成功:

  • 设置Source=file.Path

  • 使用字节数组

  • 在xaml中{Binding ImageSource}并在代码隐藏中设置ImageSource
  • 上面的代码运行得很好,我可以在监视窗口中看到字节数组/流。但仍然没有显示图像

    请注意: 我的方法是老式的WinForm方式,而不是MVVM

    插件/模块版本
  • VS 2019社区16.5.5

  • Xamarin Android SDK-10.2.0.100

  • Xamarin.表格4.6.0.800

  • Xamarin.Plugin.Media 5.0.1
  • Xamarin.Plugins.Forms.ImageCircle 3.0.0.5

  • 提前感谢

    我使用您的代码进行测试,可以拍摄照片并以圆形图像显示

     <StackLayout>
        <!--  Place new controls here  -->
        <controls:CircleImage
            x:Name="ImgProfile"
            Aspect="AspectFit"
            BorderColor="DarkSlateGray"
            BorderThickness="5"
            HeightRequest="150"
            Scale="0.6"
            WidthRequest="150" />
        <ImageButton
            BackgroundColor="Transparent"
            Clicked="ImageButton_Clicked"
            Source="plu3.png" />
    </StackLayout>
    
    您可以查看github上的示例:


    你能在github分享一个简单的示例吗?我将下载你的示例进行测试。如果它是普通的
    图像
    ,它会显示吗?@Morse-是的,会显示硬编码图像。@CherryBu MSFT-抱歉,我不能。它是专有的,因此不能公开共享整个项目/代码。ImageCircle只是将现有图像转换为圆形。它没有那么灵活。尝试改用FFloading Circle-ImageTransformations
    async void TakePhoto()
            {
                await CrossMedia.Current.Initialize();
                var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    PhotoSize = Plugin.Media.Abstractions.PhotoSize.Small,
                    Name = Guid.NewGuid().ToString().Substring(0,8),
                    Directory= "profile"
                });
    
                if(file==null)
                {
                    return;
                }
    
                ImgProfile.Source=  ImageSource.FromStream(() =>
                {
                    var stream = file.GetStream();
                    return stream;
                });
    
    
            }
    
            private void ImageButton_Clicked(object sender, EventArgs e)
            {
                TakePhoto();
    
            }
    
     <StackLayout>
        <!--  Place new controls here  -->
        <controls:CircleImage
            x:Name="ImgProfile"
            Aspect="AspectFit"
            BorderColor="DarkSlateGray"
            BorderThickness="5"
            HeightRequest="150"
            Scale="0.6"
            WidthRequest="150" />
        <ImageButton
            BackgroundColor="Transparent"
            Clicked="ImageButton_Clicked"
            Source="plu3.png" />
    </StackLayout>
    
    private async void ImageButton_Clicked(object sender, EventArgs e)
        {
            var status = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Camera);
            if (status != PermissionStatus.Granted)
            {
                if (await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Camera))
                {
                    await DisplayAlert("Need camera", "Gunna need that camera", "OK");
                }
    
                var results = await CrossPermissions.Current.RequestPermissionsAsync(Permission.Camera);
                status = results[Permission.Camera];
            }
    
            if (status == PermissionStatus.Granted)
            {
                Console.WriteLine("camera access");
    
                var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                {
                    PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium,
                    Directory = "Sample",
                    Name = "test.jpg"
                });
    
                if (file == null)
                    return;
    
                await DisplayAlert("File Location", file.Path, "OK");
                ImgProfile.Source = ImageSource.FromStream(() =>
                {
                    var stream = file.GetStream();
                    file.Dispose();
                    return stream;
                });
            }
            else if (status != PermissionStatus.Unknown)
            {
                await DisplayAlert("camera Denied", "Can not continue, try again.", "OK");
            }
    
    
        }