【问题标题】:How to get an image and a string array form a single Web Api Get method如何从单个 Web Api Get 方法中获取图像和字符串数组
【发布时间】:2016-08-30 03:32:05
【问题描述】:

我有两个 Web API 获取方法。一个获取图像,另一个获取字符串数组。问题是,为了减少有效负载和/或流量,如何从 C# 中的单个 Web API2 Get 方法获取图像和字符串数组。

【问题讨论】:

  • 您可以将图像转换为 base64 字符串表示形式并将其与字符串数组一起传递。 { "stringArray" : ["a", "b", "c"], "image" : "data:image/png;base64,R0lGODlh....hAAOw===" } 缺点是图像越大,返回的有效载荷越大。客户端需要能够解释图像的字符串表示。

标签: c# asp.net-web-api


【解决方案1】:

您可以将图像转换为 base64 字符串表示形式,例如 Data URI scheme

data:[<media type>][;base64],<data>

并将它与字符串数组一起传递。

{ 
    "stringArray"  : ["a", "b", "c"], 
    "imageData"  : "data:image/png;base64,iVBORw0KG...kJggg==" 
}  

其中一个缺点是 base64 编码使文件大小比其原始二进制表示大约大 33%,这意味着传输的数据更多。

客户端需要能够解释/解析图像的字符串表示。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

【讨论】:

  • 我的全部目的是减少有效负载和/或流量。我可以在字符串数组中包含图像的链接,并让客户端使用它来获取图像。但是,我正在尝试找到一种方法,甚至不将其添加到通信中。谢谢恩科西。
  • intention to reduce payload and/or traffic 将是一些很好的信息,可以包含在您的问题中。如果没有全貌,那些试图帮助你的人将不得不猜测你的意图。
  • 如果 33% 的图像数据增加是不可接受的,您也许可以逆转该过程。将数组转换为二进制数据,并将其与二进制图像数据一起发送到二进制响应流中。在客户端解析和使用结果会比较棘手,但如果图像很大而数组很小,它可以节省大量数据。
猜你喜欢
  • 2013-06-26
  • 2014-07-16
  • 2017-01-03
  • 2014-04-11
  • 1970-01-01
  • 2022-07-26
  • 2016-05-28
  • 2011-05-31
相关资源
最近更新 更多