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

2019-07-05 23:38发布

问题:

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.

回答1:

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.