public static ConvertionOptions FromResizeRequest(ResizeRequestModel requestModel)
        {
            var options = new ConvertionOptions
            {
                Name = requestModel.Name
            };

            if (requestModel.Width.HasValue && requestModel.Width > 0)
            {
                options.Width = Math.Min(requestModel.Width.Value, ConvertionOptions.MaxSize);
            }

            if (requestModel.Height.HasValue && requestModel.Height > 0)
            {
                options.Height = Math.Min(requestModel.Height.Value, ConvertionOptions.MaxSize);
            }

            options.TargetFormat = GetMagickFormat(requestModel.Format);

            if (requestModel.Quality.HasValue && requestModel.Quality.Value >= 1 && requestModel.Quality.Value <= 100)
            {
                options.Quality = requestModel.Quality.Value;
            }
            else
            {
                options.Quality = options.TargetFormat == MagickFormat.Png24 ? 100 : 82;
            }

            return(options);
        }
        public async Task <byte[]> Convert(byte[] source, ConvertionOptions options)
        {
            switch (options.TargetFormat)
            {
            case MagickFormat.Png24:
                return(await ConvertToPng(source, options));

            default:
                return(await ConvertToJpg(source, options));
            }
        }
 Task <byte[]> ConvertToJpg(byte[] source, ConvertionOptions options) => Execute(source,
                                                                                 $"- -filter Triangle -define filter:support=2 -resize {options.Width}x{options.Height}> -unsharp 0.25x0.25+8+0.065 -dither None -posterize 136 -quality {options.Quality} -define jpeg:fancy-upsampling=off -interlace none -colorspace sRGB -background white -alpha remove -strip jpg:-");
 Task <byte[]> ConvertToPng(byte[] source, ConvertionOptions options) => Execute(source,
                                                                                 $"- -filter Triangle -define filter:support=2 -resize {options.Width}x{options.Height}> -density 150x150 -unsharp 0.25x0.25+8+0.065 -dither None -posterize 136 -define png:compression-level=9 -define png:compression-strategy=1 -define png:exclude-chunk=all -interlace none -colorspace sRGB -strip png:-");