【问题标题】:Binding base64 to Image将 base64 绑定到图像
【发布时间】: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
    }

ma​​in_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;
    }

ma​​in_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


【解决方案1】:

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

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

在此示例中,“image/gif”是 mime 类型,后跟“base64”,然后是您的绑定,即您的实际 Base64 字符串。

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

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

希望对你有帮助。

【讨论】:

  • 这不是 web/html 问题 - 他专门询问 Xamarin Forms
  • @Jason - 我试图向他解释,加载“data:image/gif;base64”的图像是必需的,他可能缺少 Mime 类型和单词“base64” .如果这对他不起作用,我很抱歉
  • 再一次,你的回答不适用于他使用的平台
  • @Karthikk lista[i].imagem 它是一个 base64 字符串,我正在转换为 byte[],即 lista[i].image_byte。
猜你喜欢
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 1970-01-01
  • 2022-07-25
相关资源
最近更新 更多