Как передать байты или изображения в приложение 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 ответ

  1. Из вашего сервиса изображений http://img-generator-service?data=576587, предполагая, что 576587 — это идентификатор изображения, а формат файла — jpeg, прочитайте соответствующее изображение с диска или памяти в виде массива байтов. Затем преобразуйте его в строку base64, т. е. из двоичного в текстовый, используя Convert.ToBase64String(), и верните строку.

  2. Из вашего приложения, если в него встроен элемент управления браузером, вы можете передать данные в <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);
    }
}
Другие вопросы по тегам