Как вы получаете изображение через внешний источник в Web API и возвращаете его в base64?

#c# #asp.net #asp.net-web-api

#c# #asp.net #asp.net-web-api

Вопрос:

Мне нужно вызвать внешний API и получить изображение png, а затем вернуть это изображение в строке base64. Как я могу прочитать ответное сообщение в виде изображения и преобразовать его в base64?

Это то, что у меня есть на данный момент:

 [HttpGet()]
[Route("test")]
public async Task<string> GetValidationImage()
{
   using (var client = new HttpClient())
   {
    //grab image from external API as png
    client.BaseAddress = new Uri(TestBaseAddress);
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("image/png"));

    return response = await client.GetAsync(TestString);
   }
}
  

Ответ №1:

Разобрался с этим, пришлось передавать его в объект image.

 [HttpGet()]
[Route("test")]
public async Task<string> GetValidationImage()
{
   string base64String;
   client.BaseAddress = new Uri(TestBaseAddress);
   client.DefaultRequestHeaders.Accept.Clear();
   client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("image/png"));

   var response = await client.GetAsync(TestString);

   using (var ms = new MemoryStream())
   {
      var image = System.Drawing.Image.FromStream(await response.Content.ReadAsStreamAsync());
      image.Save(ms, ImageFormat.Png);
      var imageBytes = ms.ToArray();
      base64String = Convert.ToBase64String(imageBytes);
   }

   return base64String;
}