如何从Rest API处理PNG?

时间:2018-10-18 04:03:39

标签: c# asp.net rest http wcf

现在,我正在创建一个 WCF 服务,该服务将位置发送到Bing Map API,并将PNG图像返回给服务客户端。目前,我从他们的文档网页中复制了一个有效的api示例,但我很难确定如何继续下去。

从其他stackoverflow问题开始,我首先转换了响应,然后将其转换为SELECT startDate.date AS date, nextDate.date AS next_date, DATEDIFF(nextDate.date, startDate.date) AS diff FROM (SELECT (@row_number := @row_number + 1) AS orderNum, date FROM ORDERS, (SELECT @row_number:=0) AS t ORDER BY date) AS startDate INNER JOIN (SELECT (@row_number2 := @row_number2 + 1) AS orderNum, date FROM ORDERS, (SELECT @row_number2 := 0) AS t ORDER BY date LIMIT 999999999999 OFFSET 1) AS nextDate ON nextDate.orderNum = startDate.orderNum; Output: 2018-01-01 2018-01-06 5 2018-01-06 2018-01-06 0 2018-01-06 2018-01-19 13 2018-01-19 2018-02-02 14 2018-02-02 2018-02-27 25 。但是它触发并收到一个错误,提示输入不是Base64形式。

A screenshot of what input looks like

Base64

1 个答案:

答案 0 :(得分:0)

它已经是一个byte[]的PNG图片。另外,请记住,不能保证返回的图像是PNGJPEGGIF。除非返回a specific type is requested,否则它将返回最合适的图像类型。

例如fmt=jpeg

Map image

您只需要对此做些事情。在我的示例中,我将其保存到文件中。您可能只需要返回byte[]

private static HttpClient client = new HttpClient();
public static async void GetResponse()
{
    string key = Properties.Settings.Default.Key;

    Uri imgUri = new Uri($"https://dev.virtualearth.net/REST/v1/Imagery/Map/Road/Redmond Washington?ms=500,270&zl=12&&c=en-US&he=1&fmt=png&key={key}");

    HttpResponseMessage response = await client.GetAsync(imgUri);
    response.EnsureSuccessStatusCode();
    byte[] responseData = await response.Content.ReadAsByteArrayAsync();

    File.WriteAllBytes("test.png", responseData);
}
相关问题