2015-11-26 63 views
1

我需要傳遞一個像字節數組的圖像(Image _thresholdedImage)......我不知道如何做到這一點。任何想法?謝謝!在Xamarin.Forms中將圖像轉換爲字節數組

_thresholdedImage.Source = ImageSource.FromStream (() => photo.Source); 

var tessResult = await _tesseractApi.SetImage(imageBytes); 
+0

請詳細說明'SetImage()'的函數簽名。假設'SetImage()'需要一個'byte []',請使用這裏提供的答案:http://stackoverflow.com/a/23731642/5296568。將格式調整爲任何函數所期望的(位圖,也許?)。 (我只在https://zdenop.github.io/tesseract-doc/group___advanced_a_p_i.html#gaa463622111f3b11d8fca5863709cc699找到了C++文檔)。 –

回答

2

我無法在X.Forms中對其進行轉換,而是將以下代碼與依賴項服務一起使用。謝謝你們。

public async Task<byte[]> GetBytesFromImage(string filePath) 
    { 
     ConvertImageToBW(filePath); 

     // Create another bitmap that will hold the results of the filter. 
     Bitmap thresholdedBitmap = Bitmap.CreateBitmap (BitmapFactory.DecodeFile(filePath)); 

     thresholdedBitmap = BitmapFactory.DecodeFile (thresholdedImagePath); 

     byte[] bitmapData; 
     using (var stream = new MemoryStream()) 
     { 
      thresholdedBitmap.Compress(Bitmap.CompressFormat.Png, 0, stream); 
      bitmapData = stream.ToArray(); 
     } 

     return bitmapData; 
    } 
+0

我的xamarin.forms不知道位圖。我應該加入一些特別的東西嗎我究竟做錯了什麼? – Gulzar

+0

@Gulzar在每個平臺上創建你的本地實現。 –

0

您是否嘗試過使用轉換器?

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     ImageSource retSource = null; 
     if (value != null) 
     { 
      byte[] imageAsBytes = (byte[])value; 
      retSource = ImageSource.FromStream(() => new MemoryStream(imageAsBytes)); 
     } 
     return retSource; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
0

您可以使用以下功能:

public async Task<byte[]> Download(string url) 
     { 
      using (HttpClient client = new HttpClient()) 
      { 
       byte[] fileArray = await client.GetByteArrayAsync(url); 
       return fileArray; 
      } 

     } 
+1

歡迎來到Stack Overflow!雖然這段代碼可能會回答這個問題,但最好包含關於問題的描述,以及代碼如何解決給定問題。對於將來,這裏是一些信息,[如何破解一個真棒回答](http://stackoverflow.com/help/how-to-answer)在堆棧溢出。 – dirtydanee

0

通過xamairn表單中使用Java.Io我們可以從ImagePath的字節數組。 它適用於所有平臺。

private static byte[] GetBytesFromImage(string imagePath) 
     { 
      var imgFile = new File(imagePath); 
      var stream = new FileInputStream(imgFile); 
      var bytes = new byte[imgFile.Length()]; 
      stream.Read(bytes); 
      return bytes; 
     } 
0
byte[] bitmapData; 
using (var stm = new MemoryStream()) 
{ 
    snapshot.Compress(Bitmap.CompressFormat.Png, 0, stm); 
    bitmapData = stm.ToArray(); 
} 
0

下面的代碼可以用於圖像轉換成字節array.Here 跨媒體插件用於從攝像機捕獲圖像。

public byte[] imageByte; 
Stream imageStream = null; 
var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions 
     { Name = "pic.jpg"}); 
if (file == null) return; 
imageStream = file.GetStream(); 
BinaryReader br = new BinaryReader(imageStream); 
imageByte = br.ReadBytes((int)imageStream.Length); 
相關問題