Skip to main content
 首页 » 编程设计

c#之将 BitmapImage 或 IRandomAccessStream 转换为 Windows 10 UAP 中的字节数组

2024年02月05日31fff_TT

谁能帮帮我。我不明白如何将 BitmapImage 或 IRandomAccessStream 转换为字节数组。 我尝试:

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); 
    } 
} 

然后我有 WriteableBitmap 并试试这个:

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

但这对我不起作用;(

请您参考如下方法:

应该这样做:

    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; 
    }