在Xamarin.Forms中将Image转换为字节数组

我需要像字节数组一样传递一个图像( Image _thresholdedImage )…我不知道怎么做到这一点。 任何的想法? 谢谢!

 _thresholdedImage.Source = ImageSource.FromStream (() => photo.Source); var tessResult = await _tesseractApi.SetImage(imageBytes); 

我无法在X.Forms中转换它,而是使用以下代码与依赖服务。 谢谢你们。

  public async Task 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; } 

你尝试过使用转换器吗?

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

您可以使用以下function:

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

通过在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; } 
 byte[] bitmapData; using (var stm = new MemoryStream()) { snapshot.Compress(Bitmap.CompressFormat.Png, 0, stm); bitmapData = stm.ToArray(); } 

以下代码可用于将图像转换为字节数组。 这里使用CrossMedia插件从相机中捕获图像。

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