如何将接收图像的对象转换为实际图像?

时间:2010-02-27 06:18:58

标签: c# casting base64

我正在用C#开发智能设备应用程序。我正在调用Web服务。 Web服务方法返回谷歌地图。方法的返回类型是object。该对象包含字节格式的图像。该对象以base64binary格式包含图像。我需要在我的应用程序中显示实际图像。我需要做什么类型的投射才能显示图像。您能否提供我可以解决上述问题的代码或链接?

2 个答案:

答案 0 :(得分:5)

如果你有一个字符串,其中图像的字节确实在base64 encoding,那么你想调用静态FromBase64String method on the Convert class来获取一个字节数组:

byte[] bytes = Convert.FromBase64String("base 64 string");

从那里,你想要create a new instance类的MemoryStream字节:

MemoryStream ms = new MemoryStream(bytes);

最后,您要拨打的最后一个电话是静态FromStream method on the Image class,以获得您可以使用的Image

Image image = Image.FromStream(ms);

请注意,在Image类中,FromStream方法的文档的备注部分中,只要使用Image,就必须保持Stream实例(MemoryStream派生的实例)打开。

另请注意,虽然MemoryStream的实现不使用非托管资源,但不一定需要调用Dispose,但这是针对实现的编码细节,而不是合同细节,它由Stream类定义,表明你应该在完成它时调用Dispose。

您希望这样做的原因是,图像的Stream是不同的子类。例如,如果使用FileStream实例,则必须在完成后调用Dispose(以及Image类上的Dispose方法)。

答案 1 :(得分:2)

您应该能够将byte []放入MemoryStream中以创建如下图像

byte[] yourImage;
MemoryStream ms = new MemoryStream(image);
Image.FromStream(ms);