图像不显示 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的主要内容,如果未能解决你的问题,请参考以下文章