我正在用C#开发智能设备应用程序.我正在调用Web服务.Web服务方法返回谷歌地图.方法的返回类型是object.该对象包含字节格式的图像.该对象以base64binary格式包含图像.我需要在我的应用程序中显示实际图像.我需要做什么类型的投射才能显示图像.您能否提供我可以解决上述问题的代码或链接?
如果你有一个字符串,其中图像的字节确实在base64编码中,那么你想要在Convert类上调用静态FromBase64String方法来获取一个字节数组:
byte[] bytes = Convert.FromBase64String("base 64 string");
Run Code Online (Sandbox Code Playgroud)
从那里,你想创建一个新的实例中的MemoryStream的用字节类:
MemoryStream ms = new MemoryStream(bytes);
Run Code Online (Sandbox Code Playgroud)
最后,您要进行的最后一次调用是使用Image类上的静态FromStream方法来获取可以使用的Image:
Image image = Image.FromStream(ms);
Run Code Online (Sandbox Code Playgroud)
请注意,在Image类的FromStream方法的文档的备注部分中,只要使用Image,就必须保持Stream实例(MemoryStream派生自哪个)打开.
另请注意,虽然MemoryStream 的实现不使用非托管资源,并且不一定需要调用Dispose,但这是针对实现细节的编码,而不是由Stream类定义的合同细节,这表明您应该完成后调用Dispose.
您希望这样做的原因是,图像的Stream是不同的子类.例如,如果使用了FileStream实例,则必须在完成后调用Dispose(以及Image类上的Dispose方法).