public Task <IDecodedImage <PImage> > DecodeAsync(Stream stream, string path, ImageSource source, ImageInformation imageInformation, TaskParameter parameters) { if (_decoder == null) { _decoder = new WebPCodec(); } var result = new DecodedImage <PImage>(); result.Image = _decoder.Decode(stream); var downsampleWidth = parameters.DownSampleSize?.Item1 ?? 0; var downsampleHeight = parameters.DownSampleSize?.Item2 ?? 0; // TODO allowUpscale // bool allowUpscale = parameters.AllowUpscale ?? Configuration.AllowUpscale; if (parameters.DownSampleUseDipUnits) { downsampleWidth = downsampleWidth.DpToPixels(); downsampleHeight = downsampleHeight.DpToPixels(); } if (downsampleWidth != 0 || downsampleHeight != 0) { var interpolationMode = parameters.DownSampleInterpolationMode == InterpolationMode.Default ? Configuration.DownsampleInterpolationMode : parameters.DownSampleInterpolationMode; var old = result.Image; result.Image = old.ResizeUIImage(downsampleWidth, downsampleHeight, interpolationMode); old.TryDispose(); } return(Task.FromResult <IDecodedImage <PImage> >(result)); }
private async void LoadImage() { var decoder = new WebP.Mac.WebPCodec(); var httpClient = new HttpClient(); using (var stream = await httpClient.GetStreamAsync("http://www.gstatic.com/webp/gallery/1.webp").ConfigureAwait(false)) { var image = decoder.Decode(stream); InvokeOnMainThread(() => { var imageView = new NSImageView(new CGRect(0, 0, View.Bounds.Width, View.Bounds.Height)); View.AddSubview(imageView); imageView.Image = image; }); } }
private async void LoadImage() { var decoder = new WebP.Mac.WebPCodec(); var httpClient = new HttpClient(); using (var stream = await httpClient.GetStreamAsync("https://res.cloudinary.com/demo/image/upload/w_300/sample.webp").ConfigureAwait(false)) { var image = decoder.Decode(stream); InvokeOnMainThread(() => { var imageView = new NSImageView(new CGRect(0, 0, View.Bounds.Width, View.Bounds.Height)); View.AddSubview(imageView); imageView.Image = image; }); } }