C# 图像未显示inXamarin表单ImageCircle插件
我正在使用Xamarin表单开发Android应用程序。我在表单上添加了ImageCircle插件来显示配置文件图像。我想用手机摄像头拍摄的照片更新它。所以要做到这一点,我有这些代码 1.XAML 我也尝试了以下方法,但没有成功: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方
提前感谢我使用您的代码进行测试,可以拍摄照片并以圆形图像显示
<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");
}
}