From 6be72c1f5cf102a34b62eab7ab0de0c506dbf0a4 Mon Sep 17 00:00:00 2001 From: LD-Reborn Date: Thu, 20 Nov 2025 15:14:06 +0100 Subject: [PATCH] Fixed high memory usage and slow image encoding times for user images --- src/Helpers/ImageHelper.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Helpers/ImageHelper.cs b/src/Helpers/ImageHelper.cs index 49834de..75d15e4 100644 --- a/src/Helpers/ImageHelper.cs +++ b/src/Helpers/ImageHelper.cs @@ -1,11 +1,7 @@ using SixLabors.ImageSharp; using SixLabors.ImageSharp.Processing; -using SixLabors.ImageSharp.Formats.Jpeg; -using System.IO; -using SixLabors.ImageSharp.Formats.Gif; -using SixLabors.ImageSharp.Processing.Processors.Quantization; -using SixLabors.ImageSharp.Formats.Png; using SixLabors.ImageSharp.Formats.Webp; +using SixLabors.ImageSharp.Formats; namespace Berufsschule_HAM.Helpers; @@ -14,9 +10,14 @@ public static class ImageHelper public static string ResizeAndConvertToBase64(byte[] imageBytes, int size = 32) { using var inputStream = new MemoryStream(imageBytes); - using var image = Image.Load(inputStream); - // Optional: crop to square before resize + var decoderOptions = new DecoderOptions + { + TargetSize = new Size(size, size) + }; + + using var image = Image.Load(decoderOptions, inputStream); + int minDimension = Math.Min(image.Width, image.Height); var cropRectangle = new Rectangle( (image.Width - minDimension) / 2, @@ -35,7 +36,7 @@ public static class ImageHelper }); using var outputStream = new MemoryStream(); - image.Save(outputStream, new WebpEncoder(){}); - return Convert.ToBase64String(outputStream.ToArray()); + image.Save(outputStream, new WebpEncoder()); + return Convert.ToBase64String(outputStream.GetBuffer(), 0, (int)outputStream.Length); } } \ No newline at end of file