如何使用 Xamarin 的 FFImageLoading 加载本地存储在字节数组中的图像?
How do load a image stored locally in byte array using FFImageLoading for Xamarin?
我需要能够使用 FFImageLoading.ImageService
将我之前从图像解码的字节数组加载到 FFImageLoading.Views.ImageViewAsync
对象中。方法 ImageService.Instance.LoadImage(IImageLoaderTask task)
似乎是方法,但我不知道如何设置该接口的对象,而且我在源网站上找不到任何使用此类型对象的引用。
如何将字节[]加载到ImageViewAsync
对象中?
因为你已经有了一个 byte[],你可以使用 LoadStream
方法。
类似于:
ImageService.Instance
.LoadStream (GetStreamFromImageByte)
.Into (imageView);
这就是实际工作的方法。
Task<Stream> GetStreamFromImageByte (CancellationToken ct)
{
//Here you set your bytes[] (image)
byte [] imageInBytes = null;
//Since we need to return a Task<Stream> we will use a TaskCompletionSource>
TaskCompletionSource<Stream> tcs = new TaskCompletionSource<Stream> ();
tcs.TrySetResult (new MemoryStream (imageInBytes));
return tcs.Task;
}
这应该有效。
就我而言,它是这样工作的...
Modal.cs
public class User
{
public byte[] Avatar { get; set; }
}
ViewModel.cs
public ImageSource Avatar
{
get
{
return ImageSource.FromStream(()=>
{
return new MemoryStream(this.User.Avatar);
});
}
}
View.xaml
<ffimageloading:CachedImage x:Name="userAvatar"
Source = "{Binding Avatar}"
Grid.Column="0" Grid.Row="0" >
</ffimageloading:CachedImage>
我需要能够使用 FFImageLoading.ImageService
将我之前从图像解码的字节数组加载到 FFImageLoading.Views.ImageViewAsync
对象中。方法 ImageService.Instance.LoadImage(IImageLoaderTask task)
似乎是方法,但我不知道如何设置该接口的对象,而且我在源网站上找不到任何使用此类型对象的引用。
如何将字节[]加载到ImageViewAsync
对象中?
因为你已经有了一个 byte[],你可以使用 LoadStream
方法。
类似于:
ImageService.Instance
.LoadStream (GetStreamFromImageByte)
.Into (imageView);
这就是实际工作的方法。
Task<Stream> GetStreamFromImageByte (CancellationToken ct)
{
//Here you set your bytes[] (image)
byte [] imageInBytes = null;
//Since we need to return a Task<Stream> we will use a TaskCompletionSource>
TaskCompletionSource<Stream> tcs = new TaskCompletionSource<Stream> ();
tcs.TrySetResult (new MemoryStream (imageInBytes));
return tcs.Task;
}
这应该有效。
就我而言,它是这样工作的...
Modal.cs
public class User
{
public byte[] Avatar { get; set; }
}
ViewModel.cs
public ImageSource Avatar
{
get
{
return ImageSource.FromStream(()=>
{
return new MemoryStream(this.User.Avatar);
});
}
}
View.xaml
<ffimageloading:CachedImage x:Name="userAvatar"
Source = "{Binding Avatar}"
Grid.Column="0" Grid.Row="0" >
</ffimageloading:CachedImage>