Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert Image into byte array in Xamarin.Forms

I need to pass an image (Image _thresholdedImage) like byte array... I don't know how I can do this. Any idea? Thank you!

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

var tessResult = await _tesseractApi.SetImage(imageBytes);
like image 941
Jonathan Zúñiga Avatar asked Nov 26 '15 21:11

Jonathan Zúñiga


2 Answers

I was unable to convert it in X.Forms, instead I use the following code with a dependency service. Thank you to all.

    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;
    }
like image 56
Jonathan Zúñiga Avatar answered Nov 10 '22 13:11

Jonathan Zúñiga


Have you tried using converters?

 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();
    }
like image 23
MohamedHamza Avatar answered Nov 10 '22 13:11

MohamedHamza