summaryrefslogtreecommitdiff
path: root/Services/ImageMagickResizer.cs
diff options
context:
space:
mode:
authorDennis Brentjes <d.brentjes@gmail.com>2020-01-01 22:50:08 +0100
committerDennis Brentjes <d.brentjes@gmail.com>2020-01-01 22:50:08 +0100
commit2481d1857b08879a3d15e679a302667c7d8976f7 (patch)
treec8ae66b72a3469e65239c94d1d52795fb75700b2 /Services/ImageMagickResizer.cs
parentfbe866f7b26c10bb54d72c029f8c628988a90be2 (diff)
downloadavalar-2481d1857b08879a3d15e679a302667c7d8976f7.tar.gz
avalar-2481d1857b08879a3d15e679a302667c7d8976f7.tar.bz2
avalar-2481d1857b08879a3d15e679a302667c7d8976f7.zip
Adds a working but slightly buggy pipeline implementation.
Diffstat (limited to 'Services/ImageMagickResizer.cs')
-rw-r--r--Services/ImageMagickResizer.cs34
1 files changed, 34 insertions, 0 deletions
diff --git a/Services/ImageMagickResizer.cs b/Services/ImageMagickResizer.cs
new file mode 100644
index 0000000..b7ce6da
--- /dev/null
+++ b/Services/ImageMagickResizer.cs
@@ -0,0 +1,34 @@
+
+using Avalar.Services.Interfaces;
+using Avalonia.Media.Imaging;
+using ImageMagick;
+using ReactiveUI;
+using System;
+using System.Threading;
+
+namespace Avalar.Services
+{
+ public class ImageMagickResizer : ReactiveObject, IResizer
+ {
+ private uint m_Width;
+ public uint Width {
+ get => m_Width;
+ set => this.RaiseAndSetIfChanged(ref m_Width, value);
+ }
+
+ private uint m_Height;
+ public uint Height {
+ get => m_Height;
+ set => this.RaiseAndSetIfChanged(ref m_Height, value);
+ }
+
+ public IBitmap Process(IBitmap input, CancellationToken token)
+ {
+ using var image = input.ToMagickImage();
+ var geometry = new MagickGeometry(Convert.ToInt32(Width), Convert.ToInt32(Height));
+ geometry.IgnoreAspectRatio = true;
+ image.Resize(geometry);
+ return image.ToBitmap();
+ }
+ }
+}