Xamarin 表单将图像 uri 地址转换为真实图像

Xamarin forms convert image uri address to real image

我正在尝试解决 uri 地址转换为图像的问题。主要思想,我在做什么我想从画廊中挑选图像,绑定它并将它保存到数据库中。一切正常,我可以将字符串图像路径保存到 class 属性,但不幸的是我无法将该地址转换为我将在其中显示图像的 imageSource,因为现在我看到空图像圆圈。

这是我从图库中选择图片并尝试转换为图片的地方:

IGalleryImageService galleryService = Xamarin.Forms.DependencyService.Get<IGalleryImageService>();
            galleryService.ImageSelected += (o, imageSourceEventArgs) =>
            {      
                Uri uri = new Uri(imageSourceEventArgs.ImageSource);
                (ActivePage.Page as PageTemplate).CarImage.Source = ImageSource.FromFile(uri.ToString());
                ActivePage.CarImageBindable = (ActivePage.Page as PageTemplate).CarImage.Source.GetValue(StreamImageSource.StreamProperty).ToString(); // here I am trying to convert from path address to image
            };
            galleryService.SelectImage();

这是我的页面模板

    public partial class PageTemplate: ContentPage
    {
public CircleImage CarImage
        {
            get
            {
                return Car;
            }
            set
            {
                Car = value;
            }
        }
}

和 PageTemplate.xaml 我正在显示图像的地方。

<controls:CircleImage x:Name="Car" AbsoluteLayout.LayoutBounds=".5,0,-1,-1" AbsoluteLayout.LayoutFlags="PositionProportional" Aspect="AspectFill">
</controls:CircleImage>

这是我来自单元 2 class 的可绑定 属性:

public string CarImageBindable
        {
            get
            {
                return base.CarImage;
            }
            set
            {
                base.CarImage = value;
                OnPropertyChanged(nameof(CarImageBindable));
            }
        }

还有来自核心项目单元 class 的另一个 属性:

public int Id { get; set; }
public DateTime StartDate { get; set; }
public string CarImage { get; set; }

这就是为什么我决定将所有属性设为字符串数据类型,因为我想保存图像路径。是的,然后再次从数据库转换为物理图像。

感谢您的回答或建议。

好吧,我解决了这样的问题:

IGalleryImageService galleryService = Xamarin.Forms.DependencyService.Get<IGalleryImageService>();
            galleryService.ImageSelected += (o, imageSourceEventArgs) =>
            {      
                ActiveParking.CarImageBindable = imageSourceEventArgs.ImageSource.ToString();
                (ActiveParking.Page as PageTemplate).CarImage.Source = galleryService.GetImage(imageSourceEventArgs.ImageSource.ToString());

            };
            galleryService.SelectImage();