c# - 如何在 uwp 平台中将图像转换为字节数组

标签 c# uwp windows-10-universal

我需要将图像转换为字节数组以将其存储在数据库中。而且我还需要将该数组转换回图像。我进行了谷歌研究,但找不到解决方案,因为在 UWP 平台中,某些 API 不可用。

最佳答案

我从这些文章中找到了解决方案 theoutlander说。

要将图像转换为 byte[],我将使用存储文件的“OpenSequentialReadAsyn()”方法。

假设我们的图像是"file"。将其转换为字节数组执行以下操作

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

要将 byte[] 转换回图像,请执行以下操作,

 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;

        }

您可以在此 article 中找到更多信息.

关于c# - 如何在 uwp 平台中将图像转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35111635/

相关文章:

c# - 将 IntPtr 作为函数参数传递会导致内存泄漏吗?

c# - 将 ApplicationFrameHost 托管的 UWP 应用程序连接到它们的实际进程

uwp - 将 UWP 应用上传到 Windows 应用商店时出错 : Failed to merge PRI file\Resources_split. scale-100.pri

c# - 递归搜索二叉树 C#

c# - 为什么我在 Active Directory 中创建用户时得到 "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"

c# - 这个类设计是不是太接近db表结构了?

xaml - 如何在 XAML 中创建主布局模板

c# - 无法在 Flyout 的 TextBox 控件中输入输入文本

visual-studio-2015 - 错误 : DEP0001, HRESULT: 0x80073CF9 将 UWP 应用程序部署到手机时

c# - 如何以编程方式固定默认动态磁贴?