diff options
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(); + } + } +} |
