我试图从我的数据库中获取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[]的函数。
什么是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字符串图像将不会加载。
希望有帮助。