/// <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); }
/// <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); }