using System.IO; using System.Threading; using System.Threading.Tasks; using Android.Content; using Android.Graphics; using Xamarin.Forms.Internals; namespace Xamarin.Forms.Platform.Android { public sealed class StreamImagesourceHandler : IImageSourceHandler { public async Task LoadImageAsync(ImageSource imagesource, Context context, CancellationToken cancelationToken = default(CancellationToken)) { var streamsource = imagesource as StreamImageSource; Bitmap bitmap = null; if (streamsource?.Stream != null) { using (Stream stream = await ((IStreamImageSource)streamsource).GetStreamAsync(cancelationToken).ConfigureAwait(false)) bitmap = await BitmapFactory.DecodeStreamAsync(stream).ConfigureAwait(false); } if (bitmap == null) { Log.Warning(nameof(ImageLoaderSourceHandler), "Image data was invalid: {0}", streamsource); } return bitmap; } } }