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

4

我正在使用C#开发智能设备应用程序。在此过程中,我正在调用Web服务。Web服务方法返回Google地图。该方法的返回类型是对象。对象包含以字节格式存储的图像。对象以base64binary格式包含图像。我需要在我的应用程序中显示实际的图像。我需要进行什么类型的强制转换来显示图像?你能提供给我代码或任何链接来解决以上问题吗?


你已经提了15个问题,但从未接受过答案。请不要这样做。 - Foole
2个回答

5
如果您有一个字符串,其中图像的字节确实是以 base64编码的形式存在,那么您需要调用Convert类的静态 FromBase64String方法来获取一个字节数组:
byte[] bytes = Convert.FromBase64String("base 64 string");

接下来,您需要使用这些字节创建一个新的实例 MemoryStream 类:

MemoryStream ms = new MemoryStream(bytes);

最后,您需要调用Image类上的静态FromStream方法,以获取您可以使用的Image

Image image = Image.FromStream(ms);

请注意,在Image类的FromStream方法的文档的备注部分中,您必须保持Stream实例(从中MemoryStream派生)打开,只要您使用Image。
此外,请注意,虽然MemoryStream的实现不使用非托管资源,并且不一定需要调用Dispose,但这是针对实现细节而不是合同细节进行编码。合同细节由Stream类定义,该类指示在完成后应调用Dispose。
您希望这样做的原因是,如果图像的流是不同的子类,则需要这样做。例如,如果使用FileStream实例,则必须在完成后调用它的Dispose方法(以及Image类的Dispose方法)。

2
您应该能够将byte[]放入MemoryStream中,然后按照以下方式创建图像。
byte[] yourImage;
MemoryStream ms = new MemoryStream(image);
Image.FromStream(ms);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接