diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2020-01-01 22:50:08 +0100 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2020-01-01 22:50:08 +0100 |
| commit | 2481d1857b08879a3d15e679a302667c7d8976f7 (patch) | |
| tree | c8ae66b72a3469e65239c94d1d52795fb75700b2 /Services/ImageMagickResizer.cs | |
| parent | fbe866f7b26c10bb54d72c029f8c628988a90be2 (diff) | |
| download | avalar-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.cs | 34 |
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(); + } + } +} |
