Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert BitmapImage or IRandomAccessStream to byte array in Windows 10 UAP

Who can help me. I don't understand how i can convert BitmapImage or IRandomAccessStream to byte array. I try:

foreach (StorageFile file in files)
{
    BitmapImage src = new BitmapImage();

    using (IRandomAccessStream stream = await file.OpenReadAsync())
    {
        await src.SetSourceAsync(stream);

        WriteableBitmap bitMap = new WriteableBitmap(src.PixelWidth, src.PixelHeight);
        await bitMap.SetSourceAsync(stream);
    }
}

then i have WriteableBitmap and try this:

private byte[] ImageToByeArray(WriteableBitmap wbm)
{
    using (Stream stream = wbm.PixelBuffer.AsStream())
    using (MemoryStream memoryStream = new MemoryStream())
    {
        stream.CopyTo(memoryStream);
        return memoryStream.ToArray();
    }
}

but it's don't work for me ;(

like image 394
goodniko Avatar asked Feb 14 '26 13:02

goodniko


1 Answers

This should do it:

    async Task<byte[]> Convert(IRandomAccessStream s)
    {
        var dr = new DataReader(s.GetInputStreamAt(0));
        var bytes = new byte[s.Size];
        await dr.LoadAsync((uint)s.Size);
        dr.ReadBytes(bytes);
        return bytes;
    }
like image 177
Jon Avatar answered Feb 17 '26 02:02

Jon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!