public IFluentChainedMethods Convert(ConvertTo type)
        {
            var     builderObject = new BuilderObject();
            dynamic expandoObject = new ExpandoObject();

            builderObject.operation = "convert";
            if (type is ConvertTo.png)
            {
                expandoObject.type = nameof(ConvertTo.png);
            }
            else if (type is ConvertTo.jpeg)
            {
                expandoObject.type = nameof(ConvertTo.jpeg);
            }
            else if (type is ConvertTo.auto)
            {
                expandoObject.type = nameof(ConvertTo.auto);
            }
            else if (type is ConvertTo.webp)
            {
                expandoObject.type = nameof(ConvertTo.webp);
            }

            builderObject.@params = expandoObject;
            _dynamicBuilderObjects.Add(builderObject);
            return(this);
        }
        public IFluentChainedMethods Flop()
        {
            var builderObject = new BuilderObject {
                operation = "flop"
            };

            _dynamicBuilderObjects.Add(builderObject);
            return(this);
        }
        public IFluentChainedMethods Zoom(int factor)
        {
            var     builderObject = new BuilderObject();
            dynamic expandoObject = new ExpandoObject();

            builderObject.operation = "zoom";
            expandoObject.factor    = factor;
            builderObject.@params   = expandoObject;
            _dynamicBuilderObjects.Add(builderObject);
            return(this);
        }
        public IFluentChainedMethods Rotate(int multipleOf90LessThan361)
        {
            var     builderObject = new BuilderObject();
            dynamic expandoObject = new ExpandoObject();

            builderObject.operation = "rotate";
            expandoObject.rotate    = multipleOf90LessThan361 % 90 == 0 ? multipleOf90LessThan361 : 90;
            builderObject.@params   = expandoObject;
            _dynamicBuilderObjects.Add(builderObject);
            return(this);
        }
        private void ShapedOnes(string name, int width, int height)
        {
            var     builderObject = new BuilderObject();
            dynamic expandoObject = new ExpandoObject();

            builderObject.operation = name;
            expandoObject.width     = width;
            expandoObject.height    = height;
            builderObject.@params   = expandoObject;
            _dynamicBuilderObjects.Add(builderObject);
        }
        public IFluentChainedMethods Blur(double sigma)
        {
            var     builderObject = new BuilderObject();
            dynamic expandoObject = new ExpandoObject();

            builderObject.operation = "blur";
            expandoObject.sigma     = sigma;
            builderObject.@params   = expandoObject;
            _dynamicBuilderObjects.Add(builderObject);
            return(this);
        }
        public IFluentChainedMethods Extract(int top, int areaWidth)
        {
            var     builderObject = new BuilderObject();
            dynamic expandoObject = new ExpandoObject();

            builderObject.operation  = "extract";
            expandoObject.top        = top;
            expandoObject.areawidth  = areaWidth;
            expandoObject.areaheight = areaWidth;
            builderObject.@params    = expandoObject;
            _dynamicBuilderObjects.Add(builderObject);
            return(this);
        }
        public IFluentChainedMethods WaterMark(string text, int textWidth, Color color, string font = "sans bold 12",
                                               double opacity = 0.5)
        {
            var     builderObject = new BuilderObject();
            dynamic expandoObject = new ExpandoObject();

            builderObject.operation = "watermark";
            expandoObject.text      = text;
            expandoObject.textwidth = textWidth;
            expandoObject.font      = font;
            expandoObject.opacity   = opacity;
            expandoObject.color     = $"{color.R.ToString()},{color.G.ToString()},{color.B.ToString()}";
            builderObject.@params   = expandoObject;
            _dynamicBuilderObjects.Add(builderObject);
            return(this);
        }