Xamarin表单:如何接收图像而不存储在本地任何地方

本文关键字:存储 任何地 表单 何接收 图像 Xamarin | 更新日期: 2023-09-27 18:13:53

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

我正在使用Xamarin表单。但是,如果可以在本地完成,也可以通过xamarin表单完成。

Xamarin表单:如何接收图像而不存储在本地任何地方

你总是可以使用web客户端下载图像作为文件,然后使用StreamImageSource。

首先,你需要一个在Forms项目上创建的依赖服务的接口(我更喜欢使用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 };

你没有提到你是否在线-如果你在线,你可以在XAML中使用Xamarin表单的URL,例如:

 <Image HeightRequest="50" WidthRequest="50" HorizontalOptions="Center" VerticalOptions="Center" Source="{Binding UserAvatarURL}"/>

form会处理的