2016-07-22 39 views
0

我想解決uri地址轉換爲圖像問題。主要想法,我在做什麼我想從圖庫中挑選圖像,將其綁定並保存到數據庫。一切正常,我可以將字符串圖像路徑保存爲類屬性,但不幸的是,我無法將該地址轉換爲我的imageSource,我將顯示圖像,因爲現在我看到空的圖像圈。Xamarin格式轉換圖像的uri地址爲真實圖像

這是我從圖庫中選擇圖片,並試圖轉換爲圖像:

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(); 

這裏是我的PageTemplate

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> 

這是我從UNIT2類綁定屬性:

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

而且從核心項目單位類的另一個屬性:

​​

,這就是爲什麼我決定把所有的屬性字符串數據鍵入,因爲我想保存圖像路徑。是的,然後再次從數據庫轉換爲物理圖像。

感謝您的回答或建議。

+0

你好,在你的代碼中有一條線 (ActivePage.Page爲PageTemplate).CarImage.Source = ImageSource.FromFile(uri.ToString()) ; 爲什麼不只是 (ActivePage.Page爲PageTemplate).CarImage.Source = uri; – BraveHeart

回答

0

好吧,我解決的問題是這樣的:

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();