5

在 C# 中传输图像的最佳方法是什么?

  • 位图对象
  • 字节数组
  • 图像对象?
4

4 回答 4

6

没有单一的“最佳”方式。如果有,那么可能只有一种方法。这实际上取决于您的情况、需求和优先事项。

也就是说,我一有机会就使用 Base64 编码,因为它既有趣简单!:)

于 2010-07-24T15:04:09.653 回答
2

在 WCF 中,您可以从方法返回 Stream 对象:

public Stream GetImage(string name)
{ ... }

如果你有一个纯粹的基于 SOAP 的协议,你将需要坚持像 byte[] 这样的原语。这是一个表现不佳的选择,但确实没有更好的方法。您可能需要将文件分割成多个部分,以使其适用于所有客户端。一些 SOAP 客户端不允许大响应,因此我们过去将响应分成 30k 块。

传输图像的最佳方法是不使用上述任何一种方法,而是直接对图像执行 HTTP 请求并避免所有这些。这就是我们现在使用的,没有编码,没有客户端处理,直接流式传输到磁盘。您必须检查您的特定用例以确定是否可以应用。

于 2010-07-24T15:47:08.343 回答
1

我最近使用 WCF 服务实现了这一点,并选择使用 Byte[] 作为传输文件的方法,因为它实现起来非常简单:

public byte[] DownloadFile(string fileName)
{
    var stream = System.IO.File.OpenRead(fileName);

    byte[] fileContent = new byte[stream.Length];
    stream.Read(fileContent, 0, fileContent.Length);

    return fileContent;
}

上面的示例被简化了,因为我没有将文件名直接传递给 WCF 服务,但我相信你明白了一般的想法 =)

于 2010-07-24T15:08:47.263 回答
0

您还可以只返回图像的 URL,然后让客户端对返回的 URL 进行原始 HTTP 调用以获取图像。

谢谢
虚拟机

于 2010-07-24T20:08:32.947 回答