图像不显示 Xamarin.Forms

Posted

技术标签:

【中文标题】图像不显示 Xamarin.Forms【英文标题】:Image not displaying Xamarin.Forms 【发布时间】:2020-07-19 19:28:05 【问题描述】:

我正在开发一个 Xamarin 应用程序,它是我一直在从事的另一个项目的一部分,一个 API

因此 API 将个人资料图片作为字节 [] 发送到 Xamarin 应用程序,但 Xamarin 应用程序不显示它。

到目前为止,我已经尝试了来自不同平台的许多选项,包括这里,但仍然无法正常工作

我尝试将图像转换为 base 64 字符串,然后在使用显示之前将其转换回字节 []

imageProfilePic.Source = ImageSource.FromStream(() => new MemoryStream(base64Stream.ToArray()));

我尝试过的其他选项是直接使用数组创建内存流对象,我什至尝试将图像作为 base 64 字符串返回,然后将其转换为字节数组并用于创建新的 MemoryStream 来显示图像。

我开始认为 Xamarin 存在严重问题。

有没有办法我可以从 API 中只返回一个图像 URL,我认为这会是更好的选择,

我使用 EF Core 和 MS SQL 将图像作为 byte[] 数组存储在数据库中

【问题讨论】:

如果是base64数据,你必须先解码它,而不仅仅是将它转换为字节[]。您应该在下载后将图像数据写入文件以验证它是有效的图像数据。是的,您可以将图像的源分配给一个 url。 ***.com/questions/37080258/… 我已经尝试过了,但它不起作用。也许我应该尝试将其保存为文件并使用 ImageSource.From() 看看会发生什么。 可以,保存为文件再试一次,会更好。 【参考方案1】:

您能否像这样将 Base64 字符串转换为字节数组:

var byteArray = Convert.FromBase64String(base64Stream);

然后设置图片来源;

imageProfilePic.Source = ImageSource.FromStream(()=> new MemoryStream(byteArray));

【讨论】:

我已经尝试过了,但它不起作用。我已经尝试了所有可以使用 ImageSource.FromStream(); 的方法。但他们都没有工作 你检查你的base64字符串了吗?可能有问题。 我使用的 API 是我创建并在本地运行的 API,当我在 Web 应用程序中显示照片时,我将照片作为 byte[] 数组存储在数据库中,他们工作得很好。但是当我将相同的照片发送到 Xamarin android 应用程序时,我将其作为 byte[] 数组发送,我尝试将其更改为 base64 字符串并返回数组,以便我可以使用 ImageSource.FromStream 显示它,但它不起作用。我什至尝试从 API 将它作为 base64 字符串发送,但它仍然无法正常工作。让我试试重做,也许我能看到我错过的东西【参考方案2】:

其实我找到了一种显示方式,我用的是网址, 因为我可以访问 API,所以我决定调整 API,而不是将图像存储到数据库中,而是将它们存储在文件服务器中并将它们的 URL 存储在数据库中,然后我将使用 API 返回 URL 并使用它以格式访问图片

localhost:/images/picture.jpg

由于我在本地托管 API,因此 localhost 将替换为 IP 地址

在 Android 应用中会是

picture.Source = ImageSource.FromUri(myUri);

它就像一个魅力

【讨论】:

以上是关于图像不显示 Xamarin.Forms的主要内容,如果未能解决你的问题,请参考以下文章

设置图像时不显示默认图像

为啥图像路径中的图像不显示在 UIImageView 中?

相机图像显示不正确

将图像链接发送到电报而不显示图像 url

CircleImageView 不显示图像

颤振图像不显示