Как передать байты или изображения в приложение Blazor-Maui?
Как мне создать небольшой сервер для внутреннего использования приложением Blazor-Maui Desktop?
Я пытаюсь передать изображения, созданные на лету, в
img
ярлык:
<img src="/img-generator-service?data=576587" />
Я бы хотел, чтобы мое приложение Blazor-Maui создавало экземпляр службы, которая работает как веб-сервер, обслуживающий байты на localhost, например:
public async Task<byte[]> ImgGeneratorService(string data);
Или в шаблоне ядра asp.net:
[HttpGet("img-generator-service")
public async Task<IActionResult> Get(string data);
1 ответ
Из вашего сервиса изображений http://img-generator-service?data=576587, предполагая, что 576587 — это идентификатор изображения, а формат файла — jpeg, прочитайте соответствующее изображение с диска или памяти в виде массива байтов. Затем преобразуйте его в строку base64, т. е. из двоичного в текстовый, используя Convert.ToBase64String(), и верните строку.
Из вашего приложения, если в него встроен элемент управления браузером, вы можете передать данные в
<img>
пометить как строку, как показано ниже,
<img src="@image">
@code {
protected string image;
protected async override Task OnInitializedAsync()
{
await base.OnInitializedAsync();
string bytes = GetImageFromService(576587);//Service returns string
image = string.Format("data:image/jpeg;base64,{0}", bytes);
}
}