From f3aad38814b71641c7ae74036336a6a00f9d5418 Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Sat, 19 Aug 2023 15:59:55 +0200 Subject: [PATCH] Added ImageLoader.LoadImageAsync(IBuffer buffer) --- MapControl/Shared/ImageLoader.cs | 9 --------- MapControl/WPF/ImageLoader.WPF.cs | 8 ++++++++ MapControl/WinUI/ImageLoader.WinUI.cs | 23 +++++++++++++++++------ 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/MapControl/Shared/ImageLoader.cs b/MapControl/Shared/ImageLoader.cs index 4d7b8e50..a6574ca8 100644 --- a/MapControl/Shared/ImageLoader.cs +++ b/MapControl/Shared/ImageLoader.cs @@ -5,7 +5,6 @@ using System; using System.Collections.Generic; using System.Diagnostics; -using System.IO; using System.Linq; using System.Net.Http; using System.Threading.Tasks; @@ -66,14 +65,6 @@ namespace MapControl return image; } - public static async Task LoadImageAsync(byte[] buffer) - { - using (var stream = new MemoryStream(buffer)) - { - return await LoadImageAsync(stream); - } - } - internal class HttpResponse { public byte[] Buffer { get; } diff --git a/MapControl/WPF/ImageLoader.WPF.cs b/MapControl/WPF/ImageLoader.WPF.cs index e5d4e397..e06ab75e 100644 --- a/MapControl/WPF/ImageLoader.WPF.cs +++ b/MapControl/WPF/ImageLoader.WPF.cs @@ -31,6 +31,14 @@ namespace MapControl return Task.FromResult(LoadImage(stream)); } + public static async Task LoadImageAsync(byte[] buffer) + { + using (var stream = new MemoryStream(buffer)) + { + return await LoadImageAsync(stream); + } + } + public static Task LoadImageAsync(string path) { return Task.Run(() => diff --git a/MapControl/WinUI/ImageLoader.WinUI.cs b/MapControl/WinUI/ImageLoader.WinUI.cs index 411198ab..a3a96a7d 100644 --- a/MapControl/WinUI/ImageLoader.WinUI.cs +++ b/MapControl/WinUI/ImageLoader.WinUI.cs @@ -27,13 +27,8 @@ namespace MapControl var pixelData = await decoder.GetPixelDataAsync( BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied, new BitmapTransform(), ExifOrientationMode.IgnoreExifOrientation, ColorManagementMode.DoNotColorManage); - var pixels = pixelData.DetachPixelData(); - - using (var pixelStream = image.PixelBuffer.AsStream()) - { - await pixelStream.WriteAsync(pixels, 0, pixels.Length); - } + pixelData.DetachPixelData().CopyTo(image.PixelBuffer); return image; } @@ -51,6 +46,22 @@ namespace MapControl return LoadImageAsync(stream.AsRandomAccessStream()); } + public static async Task LoadImageAsync(IBuffer buffer) + { + using (var stream = new InMemoryRandomAccessStream()) + { + await stream.WriteAsync(buffer); + stream.Seek(0); + + return await LoadImageAsync(stream); + } + } + + public static Task LoadImageAsync(byte[] buffer) + { + return LoadImageAsync(buffer.AsBuffer()); + } + public static async Task LoadImageAsync(string path) { ImageSource image = null;