2016-11-16 51 views
0

我想將圖像讀入字節數組中。用我XAML如何獲取xamarin表單中的位圖的byte []數據?

,我有我的圖像的結合:

<Image x:Name="myImageView" 
      Source="triangles.bmp" 
      Aspect="AspectFit" 
      VerticalOptions="Center" 
      HorizontalOptions="FillAndExpand"/> 

我想從myImageView數據具有到字節數組。 什麼代碼可以在xamarin表格上完成? (我還沒有測試過),但我需要這種方式(綁定圖像 - >字節[],而不是字節[] - >圖像)。

我的用法是,例如,應用模糊卷積過濾器,或查找最大像素值。

感謝。

+1

您可以直接從磁盤讀入一個byte []。但Image控件不提供任何訪問其內部圖像數據的機制。 – Jason

+0

@Jason好,然後我會從磁盤讀取它。如何才能做到這一點?我一直在尋找文學上的小時,卻一無所獲。 Plase給出一個代碼片段 – Gulzar

+0

您使用的是PCL還是共享項目?你的圖像存儲在哪裏?它是應用程序包的一部分,還是照相機圖像等? – Jason

回答

0

由於你使用PCL就可以實現這通過使用我創建界面下方並登記其與Xamarin DependencyService

我提供的方法從一個URIImageSource得到字節 & FileImageSource

在您的PCL項目

private void ABCDEFGHIJKLMNOPQRSTUVWXYZ(){ 
     var link = new Uri("https://xamarin.com/content/images/pages/forms/example-app.png"); 
     var goNative = DependencyService.Get<IStackoverflow>(); 
     var bytes = goNative.GetImageBytes(link); // Your Bytes As Requested 


    } 

    public interface IStackoverflow // Create A Interface To Access Platform Spefice 
    { 
     byte[] GetImageBytes(string filepath); 
     byte[] GetImageBytes(Uri uri); 
    } 

在你的本地項目確保您繼承從上面的界面

如果你不訪問它從你PCL項目則

的ImagePath = Resources.GetDrawable(Resource.Drawable.triangles.bmp) ;

public byte[] GetImageBytes(string imagePath) 
    { 

     var fileStream = new FileStream(imagePath, FileMode.Open, FileAccess.Read); 
     var buffer = new byte[fileStream.Length]; 
     fileStream.Read(buffer, 0, (int)fileStream.Length); 
     fileStream.Close(); 
     return buffer; 
    } 

    public byte[] GetImageBytes(Uri uri) 
    { 
     var myWebClient = new WebClient(); 
     return myWebClient.DownloadData(uri); 
    } 

如果你不熟悉Xamarin DependencyService這裏是他們的文檔 Xamarin DependencyService

+0

謝謝!這與工作非常接近,但是當我嘗試訪問圖像時,我正在從android部件中獲取異常。我應該在android還是Xamaril表單中以不同的方式聲明路徑?在Xamarin格式中,「triangles.bmp」起作用。在android中,它沒有找到該文件。 – Gulzar

+0

我假設這個圖像是你的項目的一部分,因爲它適用於你的形式,如果你試圖訪問它只從你的本地android項目完整的文件路徑將需要用作文件名,例如,如果圖像是在您的可繪製文件夾文件名應該是Resource.Drawable.triangles.bmp – TheMoFaDe

+0

帶點?不斜槓?這是爲什麼?另外,我在哪裏可以找到關於此的官方文檔? – Gulzar

相關問題