Xamarin形式:如何在不在本地存储的情况下接收图像?

时间:2016-10-19 16:40:15

标签: c# android ios xamarin xamarin.forms

我正在开发一个应用程序,我希望用户从Web服务获取图像,但不希望它们本地存储在localdb或本地文件中。 有办法吗?

我正在使用Xamarin表格。但如果它可以原生,也可以通过xamarin表格完成。

2 个答案:

答案 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}"/>

表格将处理它。