Search code examples
c#filexamarinphoto

Saving a Xamarin image to file


Hi so I'm trying to save an image selected by the user to file so that i can later upload it to my mySQL database.

So I have this code:

var result = await MediaPicker.PickPhotoAsync(new MediaPickerOptions
{
    Title = "Please pick a selfie"
});

var stream = await result.OpenReadAsync();
resultImage.Source = ImageSource.FromStream(() => stream);

string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string filename = Path.Combine(path, "myfile");

using (var streamWriter = new StreamWriter(filename, true))
{
    streamWriter.WriteLine(GetImageBytes(stream).ToString());
}

using (var streamReader = new StreamReader(filename))
{
    string content = streamReader.ReadToEnd();
    System.Diagnostics.Debug.WriteLine(content);
}

Here's the GetImageBytes(..) function:

private byte[] GetImageBytes(Stream stream)
{
    byte[] ImageBytes;
    using (var memoryStream = new System.IO.MemoryStream())
    {
        stream.CopyTo(memoryStream);
        ImageBytes = memoryStream.ToArray();
    }
    return ImageBytes;
}

The code kind of works, it creates a file but doesn't save the image. Instead it saves "System.Bytes[]". It saves the name of the object, not the contents of the object.

myfile

enter image description here

Any help would be really appreciated. Thanks!


Solution

  • StreamWriter is for writing formatted strings, not binary data. Try this instead

    File.WriteAllBytes(filename,GetImageBytes(stream));