
To resize images like PNG, JPEG, JPG and Co using .NET Core, there is no SDK support available today.
But the Microsoft Mono team has written a wrapper named SkiaSharp based on the Google library Skia , which works wonderfully and fast - but unfortunately a bit complex. The documentation can also be improved.
Snippet
Here is my snippet to resize images width SkiaSharp
1 public class SkiaSharpImageManipulationProvider : IImageManipulationProvider
2 {
3 public (byte[] FileContents, int Height, int Width) Resize(byte[] fileContents,
4 int maxWidth, int maxHeight,
5 SKFilterQuality quality = SKFilterQuality.Medium)
6 {
7 using MemoryStream ms = new MemoryStream(fileContents);
8 using SKBitmap sourceBitmap = SKBitmap.Decode(ms);
9
10 int height = Math.Min(maxHeight, sourceBitmap.Height);
11 int width = Math.Min(maxWidth, sourceBitmap.Width);
12
13 using SKBitmap scaledBitmap = sourceBitmap.Resize(new SKImageInfo(width, height), quality);
14 using SKImage scaledImage = SKImage.FromBitmap(scaledBitmap);
15 using SKData data = scaledImage.Encode();
16
17 return (data.ToArray(), height, width);
18 }
19 }

Comments