我正在开发一个应用程序,我希望用户从Web服务获取图像,但不希望它们本地存储在localdb或本地文件中。 有办法吗?
我正在使用Xamarin表格。但如果它可以原生,也可以通过xamarin表格完成。
答案 0 :(得分:1)
您始终可以使用webclient,然后使用StreamImageSource将图像下载为文件。
首先,你需要一个依赖服务的接口(我更喜欢使用WebClient而不是任何第三方库,所以我使用这些服务,如果你喜欢,可以随意使用其他任何东西,只需跳过服务部分)表单项目:
public interface IDownloader
{
byte[] Download(string Url);
}
然后,您需要Android项目的依赖服务:
[assembly: Dependency ( typeof (--yournamespace--.Downloader))]
public class Downloader : IDownloader
{
public byte[] Download(string Url)
{
//This code is synchronous, I would recommend to do it asynchronously
WebClient wc = new WebClient();
return wc.DownloadData(Url);
}
}
然后您可以下载图像并将其设置为源:
//I assume there exist an image control called img.
var dl = DependencyService.Get<IDownloader> ();
byte[] data = dl.Download(--url to the image--);
var ms = new MemoryStream(data);
img.Source = new StreamImageSource{ Source = (t) => ms };
答案 1 :(得分:0)
您没有提及您是否在线 - 如果您在线,您可以在XAML中使用Xamarin表格中的URL,例如:
<Image HeightRequest="50" WidthRequest="50" HorizontalOptions="Center" VerticalOptions="Center" Source="{Binding UserAvatarURL}"/>
表格将处理它。