gpt4 book ai didi

c# - 在 metro/windows 8 .NET 4.5 中将图像转换为字符串 (base64)

转载 作者:行者123 更新时间:2023-11-30 16:23:21 24 4
gpt4 key购买 nike

我需要将图片(存储在 Image 类型的对象中)转换为字符串以在 Metro 应用程序中存储(然后再转换回 Image 对象以供显示)

我找到了很多关于在 .NET 4.0 等中将图像转换为 base64 字符串的答案,但在 4.5 中,System.Windows.Bitmap 命名空间不存在(Image 类在 Windows.UI.Xaml.Media 中。 Imaging) 以及该命名空间中使 4.0“Save()”成为可能的方法似乎不在 4.5 中......除非我找不到它。

有一个这样做的例子 here但正如我所说,它在 metro 应用程序/.NET 4.5 中不起作用

有什么想法吗?

更多详情:执行此操作的方法将转换包含图像对象的实例字段(我使用了它的 source 属性,这是正确的吗?)并且需要将转换的结果字符串存储在实例字符串字段中。然后可以序列化整个对象,忽略 Image 字段,希望稍后反序列化并将字符串恢复到 Image 字段以供显示。到目前为止,我尝试使用 DataContractSerializer 来序列化图像中的字符串,但它似乎并不喜欢它。一旦我从图像中得到一个字符串,我就可以序列化它,但这不是我以前做过的事情。

此外,似乎唯一绝对正确的 .net 4.5 文档是此处的页面:http://msdn.microsoft.com/library/windows/apps/

.net 4.5 的“外观正常”的 msdn 站点上的页面似乎并不总是适用于 Metro 应用程序? (只是一个理论?)

[已解决]

我终于明白了!对于任何必须这样做的人来说,答案就在这里:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/38c6cb85-7454-424f-ae94-32782c036567/

这是我做的

var reader = new DataReader(myMemoryStream.GetInputStreamAt(0));
var bytes = new byte[myMemoryStream.Size];
await reader.LoadAsync((uint)myMemoryStream.Size);
reader.ReadBytes(bytes);

在这个序列之后,字节数组 bytes 将包含来自流的数据,从那里我将一个字符串设置为值

Convert.ToBase64String(bytes);

最佳答案

我终于明白了!对于任何必须这样做的人来说,答案就在这里:http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/38c6cb85-7454-424f-ae94-32782c036567/

这是我做的

var reader = new DataReader(myMemoryStream.GetInputStreamAt(0));
var bytes = new byte[myMemoryStream.Size];
await reader.LoadAsync((uint)myMemoryStream.Size);
reader.ReadBytes(bytes);

在这个序列之后,字节数组 bytes 将包含流中的数据,从那里我将一个字符串设置为值

Convert.ToBase64String(bytes);

关于c# - 在 metro/windows 8 .NET 4.5 中将图像转换为字符串 (base64),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com