From c50fc079fd4541622d1cf42e6022f8267b510a81 Mon Sep 17 00:00:00 2001 From: Mia Winter Date: Fri, 19 Apr 2024 21:48:07 +0200 Subject: [PATCH] Changed Profile Picture to be always square (will be extended using black areas) --- Wave/Components/Account/Pages/Manage/ProfilePicture.razor | 2 +- Wave/Services/ImageService.cs | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Wave/Components/Account/Pages/Manage/ProfilePicture.razor b/Wave/Components/Account/Pages/Manage/ProfilePicture.razor index 4ba183c..a1b237d 100644 --- a/Wave/Components/Account/Pages/Manage/ProfilePicture.razor +++ b/Wave/Components/Account/Pages/Manage/ProfilePicture.razor @@ -40,7 +40,7 @@ private async Task ProfilePictureChanged(string tempFilePath) { if (User is null) return; - var guid = await ImageService.StoreImageAsync(tempFilePath); + var guid = await ImageService.StoreImageAsync(tempFilePath, enforceSize:true); if (!guid.HasValue) throw new ApplicationException("Processing Image failed."); Guid? imageToDelete = null; diff --git a/Wave/Services/ImageService.cs b/Wave/Services/ImageService.cs index 5f0a27f..98c6b68 100644 --- a/Wave/Services/ImageService.cs +++ b/Wave/Services/ImageService.cs @@ -13,15 +13,16 @@ public class ImageService(ILogger logger) { return File.Exists(path) ? path : null; } - public async Task GetResized(string path, int size) { + public async Task GetResized(string path, int size, bool enforceSize = false, CancellationToken cancellation = default) { var image = new MagickImage(path); image.Resize(new MagickGeometry(size)); + if (enforceSize) image.Extent(new MagickGeometry(size), Gravity.Center, MagickColors.Black); using var memory = new MemoryStream(); - await image.WriteAsync(memory); + await image.WriteAsync(memory, cancellation); return memory.ToArray(); } - public async ValueTask StoreImageAsync(string temporaryPath, int size = 800, + public async ValueTask StoreImageAsync(string temporaryPath, int size = 800, bool enforceSize = false, CancellationToken cancellation = default) { if (File.Exists(temporaryPath) is not true) return null; @@ -33,6 +34,7 @@ public class ImageService(ILogger logger) { // Jpeg with 90% compression should look decent image.Resize(new MagickGeometry(size)); // this preserves aspect ratio + if (enforceSize) image.Extent(new MagickGeometry(size), Gravity.Center, MagickColors.Black); image.Format = MagickFormat.Jpeg; image.Quality = 90;