Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="image"></param>
        /// <returns></returns>
        public override Image Apply(Image image)
        {
            GetParams(fm);

            if (!(image is Image))
            {
                return(image);
            }

            Bitmap dst = AddinUtils.CloneImage(image) as Bitmap;

            BlurMode blurMode          = (BlurMode)Params["BlurMode"].Value;
            double   gaussianSigma     = (double)Params["GaussianSigma"].Value;
            int      gaussianSize      = (int)Params["GaussianSize"].Value;
            int      gaussianThreshold = (int)Params["GaussianThreshold"].Value;
            int      boxSize           = (int)Params["BoxSize"].Value;
            float    gdiRatio          = (float)Params["GdiRatio"].Value;

            Accord.Imaging.Filters.IFilter filter = null;
            switch (blurMode)
            {
            case BlurMode.Normal:
                filter = new Accord.Imaging.Filters.Blur();
                if (dst is Image)
                {
                    dst = (filter as Accord.Imaging.Filters.Blur).Apply(dst);
                }
                break;

            case BlurMode.Gaussian:
                filter = new Accord.Imaging.Filters.GaussianBlur();
                (filter as Accord.Imaging.Filters.GaussianBlur).Sigma     = gaussianSigma;
                (filter as Accord.Imaging.Filters.GaussianBlur).Size      = gaussianSize;
                (filter as Accord.Imaging.Filters.GaussianBlur).Threshold = gaussianThreshold;
                dst = filter.Apply(dst);
                break;

            case BlurMode.Box:
                filter = new Accord.Imaging.Filters.FastBoxBlur((byte)boxSize, (byte)boxSize);
                dst    = AddinUtils.ProcessImage(filter, dst, false);
                break;

            case BlurMode.GDI:
                var effect = new BlurEffect(gdiRatio, true);
                dst.ApplyEffect(effect, new Rectangle(0, 0, dst.Width, dst.Height));
                break;
            }
            AddinUtils.CloneExif(image, dst);
            return(dst);
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="image"></param>
        /// <returns></returns>
        public override Image Apply(Image image)
        {
            GetParams(fm);

            if (!(image is Image))
            {
                return(image);
            }

            Bitmap dst = AddinUtils.CloneImage(image) as Bitmap;

            SharpenMode sharpenMode       = (SharpenMode)Params["SharpenMode"].Value;
            double      gaussianSigma     = (double)Params["GaussianSigma"].Value;
            int         gaussianSize      = (int)Params["GaussianSize"].Value;
            int         gaussianThreshold = (int)Params["GaussianThreshold"].Value;
            float       gdiRatio          = (float)Params["GdiRatio"].Value;
            float       gdiAmount         = (float)Params["GdiAmount"].Value;

            Accord.Imaging.Filters.IFilter filter = null;
            switch (sharpenMode)
            {
            case SharpenMode.Normal:
                filter = new Accord.Imaging.Filters.Sharpen();
                dst    = (filter as Accord.Imaging.Filters.Sharpen).Apply(dst);
                break;

            case SharpenMode.Gaussian:
                filter = new Accord.Imaging.Filters.GaussianSharpen();
                (filter as Accord.Imaging.Filters.GaussianSharpen).Sigma     = gaussianSigma;
                (filter as Accord.Imaging.Filters.GaussianSharpen).Size      = gaussianSize;
                (filter as Accord.Imaging.Filters.GaussianSharpen).Threshold = gaussianThreshold;
                dst = filter.Apply(dst);
                break;

            case SharpenMode.GDI:
                var effect = new SharpenEffect(gdiRatio, gdiAmount);
                dst.ApplyEffect(effect, new Rectangle(0, 0, dst.Width, dst.Height));
                break;
            }
            AddinUtils.CloneExif(image, dst);
            return(dst);
        }