source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKImageSourceService/SKImageSourceService.Apple.cs (27 lines of code) (raw):

using System.Threading; using System.Threading.Tasks; using Microsoft.Maui; using SkiaSharp.Views.iOS; using UIKit; namespace SkiaSharp.Views.Maui.Handlers { public partial class SKImageSourceService { public override Task<IImageSourceServiceResult<UIImage>?> GetImageAsync(IImageSource imageSource, float scale = 1, CancellationToken cancellationToken = default) { var image = imageSource switch { ISKImageImageSource img => img.Image?.ToUIImage(), ISKBitmapImageSource bmp => bmp.Bitmap?.ToUIImage(), ISKPixmapImageSource pix => pix.Pixmap?.ToUIImage(), ISKPictureImageSource pic => pic.Picture?.ToUIImage(pic.Dimensions), _ => null, }; return image != null ? FromResult(new ImageSourceServiceResult(image, () => image.Dispose())) : FromResult(null); } private static Task<IImageSourceServiceResult<UIImage>?> FromResult(ImageSourceServiceResult? result) => Task.FromResult<IImageSourceServiceResult<UIImage>?>(result); } }