如何使用 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>