#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;
}