Xamarin表单:如何接收图像而不存储在本地任何地方
本文关键字:存储 任何地 表单 何接收 图像 Xamarin | 更新日期: 2023-09-27 18:13:53
我正在开发一个应用程序,我希望用户从web服务中获取图像,但不希望它们在本地存储在localdb或本地文件中。有办法吗?
我正在使用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会处理的