Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I convert a image into a byte array in uwp platform

I need to convert an image into a byte array to store it in a database. and also I need to convert that array back to the image. I did google research but I couldn't find a solution because in UWP platform some api doesn't available.

like image 560
Nuwan Karunarathna Avatar asked Jan 31 '16 08:01

Nuwan Karunarathna


1 Answers

I found the solution from these articles as theoutlander says.

To convert a image into a byte[] i'm going to use the 'OpenSequentialReadAsyn()' method of a storage file.

lets assume that our image is 'file'. to convert it into a byte array do the below

 using (var inputStream = await file.OpenSequentialReadAsync())
        {
            var readStream = inputStream.AsStreamForRead();

            var byteArray =  new byte[readStream.Length];
            await readStream.ReadAsync(byteArray, 0, byteArray.Length);
            return byteArray;
        }

To convert the byte[] back into a image do the following,

 using (InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream())
        {
            using (DataWriter writer = new DataWriter(stream.GetOutputStreamAt(0)))
            {
                writer.WriteBytes(this.byteArray);
                await writer.StoreAsync();
            }
            var image = new BitmapImage();
            await image.SetSourceAsync(stream);
            return image;

        }

you can find more in this article.

like image 195
Nuwan Karunarathna Avatar answered Nov 14 '22 23:11

Nuwan Karunarathna