提问者:小点点

将base64绑定到图像


我试图从我的数据库中获取base64string格式的图像,并将它们转换为图像以显示在我的carouselview中。 我遵循了本教程,但我没有得到图像显示在旋转木马上。

这是我的密码。

view_model_main

 private void carrega_dados()
    {
        ws_dados dados = new ws_dados();
        var lista = dados.dados_home();
        for (int i = 0; i < lista.Count; i++)
        {
            lista[i].image_byte = Convert.FromBase64String(lista[i].imagem);
            lista_imagens.Add(lista[i]);
        }
        //carrega as imagens e seta na string
    }

main_page.xaml.cs

  private void adiciona_imagens()
    {
        var lista = view_model_main.lista_imagens.ToList();
        List<ImageSource> lista_imagem = new List<ImageSource>();
        for (int i = 0; i < lista.Count; i++)
        {
            lista_imagem.Add(ImageSource.FromStream(() => new MemoryStream(lista[i].image_byte)));
        }
        MainCarouselView.ItemsSource = lista_imagem;
    }

main_page.xaml

<StackLayout HeightRequest="210" Spacing="0"   Margin="0">
            <CarouselView x:Name="MainCarouselView">
                <forms:CarouselView.ItemTemplate>
                    <DataTemplate>
                        <Image Source="{Binding .}"
                                HorizontalOptions="StartAndExpand" VerticalOptions="StartAndExpand">
                        </Image>
                    </DataTemplate>
                </forms:CarouselView.ItemTemplate>
            </CarouselView>
        </StackLayout>

如果还需要什么,我会用更多的信息更新这个问题。

编辑:添加了将base64转换为byte[]的函数。


共1个答案

匿名用户

什么是lista[i].imagem类型? 这个字节是[]吗? 如果是这样,lista[i].image_byte将是base64的字符串。

现在,一般来说,如果您需要使用Base64字符串作为图像,您需要下面的img标记。

在本例中,“image/gif”是mime类型,后面跟着“Base64”,然后是绑定,这是实际的Base64字符串。

<img alt="" src="data:image/gif;base64,R0lGODdhAQABAPAAAP8AAAAAACwAAAAAAQABAAACAkQBADs=" />

看来您在源代码中缺少Mime类型和base64。 仅通过分配一个base64字符串图像将不会加载。

希望有帮助。

相关问题