【发布时间】:2020-06-16 00:42:00
【问题描述】:
我正在尝试以 base64string 格式获取来自我的数据库的图像并将它们转换为图像以在我的 CarouselView 中显示它们。我关注了this tutorial,但我没有让图像出现在轮播中。
这是我的代码。
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>
如果还有其他需要,我会用更多信息更新问题。
EDIT:添加了将base64转换为byte[]的函数。
编辑 1:我已经检查了来自数据库的 base64 并且它正在工作,我可以在 decoder 中解码就好了
【问题讨论】:
-
你在哪里解码base64数据?您是否验证了解码后的数据是有效图像?
-
@Jason 我用将 base64 转换为 byte[] 的函数编辑了问题。
-
当我尝试从数据库中读取图像时,由于某种原因,我的图像已损坏。我将检查发生了什么并更新我的问题。
-
我已经用更多信息编辑了这个问题。
-
你可能想试试 FFImageLoading - 它支持 Base64 - github.com/luberda-molinet/FFImageLoading/wiki/…
标签: c# xamarin.forms