コード例 #1
0
ファイル: Program.cs プロジェクト: zhaoyingju/resizer
        public static string imageDir = "..\\..\\Samples\\Images\\";// "..\\..\\..\\..\\Samples\\Images\\";
        static void Main(string[] args)
        {
            Config c = new Config();

            new PrettyGifs().Install(c);
            WatermarkPlugin w = (WatermarkPlugin) new WatermarkPlugin().Install(c);

            w.OtherImages.Path = imageDir;

            Console.WindowWidth = 200;


            //TODO: make watermark system work outside of the web folder.
            string s = c.GetDiagnosticsPage();

            c.BuildImage(imageDir + "quality-original.jpg", "grass.gif", "rotate=3&width=600&format=gif&colors=128&watermark=Sun_256.png");

            CompareFreeImageDecoderToDefault();

            CompareFreeImageEncoderToDefault();


            CompareFreeImageToDefault();

            EvaluateSpeedPlugin();
            Console.ReadKey();
        }
コード例 #2
0
        /// <summary>
        /// This ensures we have updated the dynamic configuration values like watermark path which we don't know until runtime.
        /// </summary>
        private void EnsureConfiguration()
        {
            WatermarkPlugin plugin     = (WatermarkPlugin)_config.Plugins.AllPlugins.First(p => p is WatermarkPlugin);
            ImageLayer      imageLayer = (ImageLayer)plugin.NamedWatermarks.First().Value.First();

            imageLayer.Path = _filePath;
        }
コード例 #3
0
        /// <summary>
        ///   缩略与水印同一方法
        /// </summary>
        /// <param name="stream"> </param>
        /// <param name="maxwith"> </param>
        /// <param name="maxheight"> </param>
        /// <param name="watermark"> </param>
        /// <returns> </returns>
        private static Stream Thumbnail(Stream stream, int maxwith, int maxheight, string watermark)
        {
            var c = ImageResizer.Configuration.Config.Current;

            if (!c.Plugins.Has <PrettyGifs>())
            {
                new PrettyGifs().Install(c);
            }
            if (!c.Plugins.Has <AnimatedGifs>())
            {
                new AnimatedGifs().Install(c);
            }

            //c.Plugins.LoadPlugins();
            if (c.Plugins.Has <SizeLimiting>())
            {
                c.Plugins.Get <SizeLimiting>().Uninstall(c);
            }


            WatermarkPlugin water = null;

            if (!c.Plugins.Has <WatermarkPlugin>())
            {
                water = (WatermarkPlugin) new WatermarkPlugin().Install(c);
            }
            else
            {
                water = c.Plugins.Get <WatermarkPlugin>();
            }

            var strsetting = "";

            if (maxheight != 0 && maxheight != 0)
            {
                strsetting += "maxwidth=" + maxwith + "&maxheight=" + maxheight;
            }

            if (!string.IsNullOrEmpty(watermark))
            {
                water.OtherImages.Path  = Path.GetDirectoryName(watermark);
                water.OtherImages.Align = System.Drawing.ContentAlignment.BottomRight;

                var mark = Path.GetFileName(watermark);
                strsetting += "&watermark=" + mark;
            }

            strsetting = strsetting.TrimStart('&');
            var outStream = new MemoryStream();

            c.BuildImage(stream, outStream, strsetting);

            var s = c.GetDiagnosticsPage();

            Console.WriteLine(s);

            return(outStream);
        }
コード例 #4
0
        /// <summary>
        /// Applyes watermark to the image based on the isWaterMark property of that image
        /// </summary>
        /// <param name="aspxCommonObj">Common Object aspx</param>
        /// <param name="rs">Resize settings</param>
        /// <param name="SourceFile">The full source path of image</param>
        /// <param name="DestinationFolder">The full destination path of the image</param>
        public static void ApplyWaterMarkToImage(AspxCommonInfo aspxCommonObj, ResizeSettings rs, string SourceFile, string DestinationFolder)
        {
            StoreSettingConfig ssc           = new StoreSettingConfig();
            string             waterMarkText = ssc.GetStoreSettingsByKey(StoreSetting.WaterMarkText, aspxCommonObj.StoreID,
                                                                         aspxCommonObj.PortalID, aspxCommonObj.CultureName);


            try
            {
                if (!string.IsNullOrEmpty(waterMarkText))
                {
                    string waterMarkposition = ssc.GetStoreSettingsByKey(StoreSetting.WaterMarkTextPosition,
                                                                         aspxCommonObj.StoreID, aspxCommonObj.PortalID,
                                                                         aspxCommonObj.CultureName);
                    double waterMarkRotAngle =
                        double.Parse(ssc.GetStoreSettingsByKey(StoreSetting.WaterMarkTextRotation, aspxCommonObj.StoreID,
                                                               aspxCommonObj.PortalID, aspxCommonObj.CultureName));

                    bool showWaterMarkImage = bool.Parse(ssc.GetStoreSettingsByKey(StoreSetting.ShowWaterMarkImage,
                                                                                   aspxCommonObj.StoreID,
                                                                                   aspxCommonObj.PortalID,
                                                                                   aspxCommonObj.CultureName));


                    //You can have multiple configurations. Config.Current contains web.config settings, but you can use new Config(); to get a clean slate.
                    Config c = Config.Current;

                    //Get a reference to the instance
                    WatermarkPlugin wp = c.Plugins.Get <WatermarkPlugin>();
                    if (wp == null)
                    { //Install it if it's missing
                        wp = new WatermarkPlugin();
                        wp.Install(c);
                    }
                    //Re-query in case another thread beat us  to installation.
                    wp = c.Plugins.Get <WatermarkPlugin>();

                    //Adding single text layer multiple layer can be added
                    TextLayer t = new TextLayer();
                    t.Text      = waterMarkText;
                    t.Fill      = true; //Fill the image with the text
                    t.TextColor = System.Drawing.Color.White;
                    t.Angle     = waterMarkRotAngle;
                    TextPosition posType = (TextPosition)Enum.Parse(typeof(TextPosition), waterMarkposition);
                    if (!string.IsNullOrEmpty(posType.ToString()))
                    {
                        switch (posType)
                        {
                        case TextPosition.BOTTOM_CENTER:
                            t.Left   = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                            t.Right  = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                            t.Width  = new DistanceUnit(50, DistanceUnit.Units.Percentage);
                            t.Bottom = new DistanceUnit(5, DistanceUnit.Units.Percentage);

                            break;

                        case TextPosition.MID_CENTER:
                            t.Left   = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                            t.Right  = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                            t.Width  = new DistanceUnit(50, DistanceUnit.Units.Percentage);
                            t.Bottom = new DistanceUnit(50, DistanceUnit.Units.Percentage);

                            break;

                        case TextPosition.TOP_CENTER:
                            t.Left  = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                            t.Right = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                            t.Width = new DistanceUnit(50, DistanceUnit.Units.Percentage);
                            t.Top   = new DistanceUnit(5, DistanceUnit.Units.Percentage);

                            break;

                        case TextPosition.BOTTOM_LEFT:
                            t.Left   = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                            t.Width  = new DistanceUnit(50, DistanceUnit.Units.Percentage);
                            t.Bottom = new DistanceUnit(5, DistanceUnit.Units.Percentage);

                            break;

                        case TextPosition.MID_LEFT:
                            t.Left  = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                            t.Width = new DistanceUnit(50, DistanceUnit.Units.Percentage);
                            t.Top   = new DistanceUnit(50, DistanceUnit.Units.Percentage);

                            break;

                        case TextPosition.TOP_LEFT:
                            t.Left  = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                            t.Width = new DistanceUnit(50, DistanceUnit.Units.Percentage);
                            t.Top   = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                            break;

                        default:
                            t.Left   = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                            t.Right  = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                            t.Width  = new DistanceUnit(50, DistanceUnit.Units.Percentage);
                            t.Bottom = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                            break;
                        }
                    }
                    else
                    {
                        t.Left   = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                        t.Right  = new DistanceUnit(30, DistanceUnit.Units.Percentage);
                        t.Width  = new DistanceUnit(50, DistanceUnit.Units.Percentage);
                        t.Bottom = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                    }

                    wp.NamedWatermarks["text"] = new Layer[] { t };
                    ResizeSettings rsWM;
                    if (showWaterMarkImage)
                    {
                        string waterMarkImageposition = ssc.GetStoreSettingsByKey(StoreSetting.WaterMarkImagePosition,
                                                                                  aspxCommonObj.StoreID,
                                                                                  aspxCommonObj.PortalID,
                                                                                  aspxCommonObj.CultureName);
                        double waterMarkImageRotAngle =
                            double.Parse(ssc.GetStoreSettingsByKey(StoreSetting.WaterMarkImageRotation,
                                                                   aspxCommonObj.StoreID, aspxCommonObj.PortalID,
                                                                   aspxCommonObj.CultureName));

                        string     imagePath = @"Modules\AspxCommerce\AspxStoreSettingsManagement\uploads\noitem.png";
                        ImageLayer i         = new ImageLayer(c); //ImageLayer needs a Config instance so it knows where to locate images
                        i.Path              = "~/" + imagePath;
                        i.DrawAs            = ImageLayer.LayerPlacement.Overlay;
                        i.Width             = new DistanceUnit(20, DistanceUnit.Units.Percentage);
                        i.Height            = new DistanceUnit(20, DistanceUnit.Units.Percentage);
                        i.ImageQuery.Rotate = waterMarkImageRotAngle;
                        ImagePosition imgPosType = (ImagePosition)Enum.Parse(typeof(ImagePosition), waterMarkImageposition);
                        if (!string.IsNullOrEmpty(imgPosType.ToString()))
                        {
                            switch (imgPosType)
                            {
                            case ImagePosition.CENTER:
                                break;

                            case ImagePosition.TOP_RIGHT:
                                i.Top   = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                                i.Right = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                                break;

                            case ImagePosition.TOP_LEFT:
                                i.Top  = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                                i.Left = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                                break;

                            case ImagePosition.BOTTOM_RIGHT:
                                i.Bottom = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                                i.Right  = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                                break;

                            case ImagePosition.BOTTOM_LEFT:
                                i.Bottom = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                                i.Left   = new DistanceUnit(5, DistanceUnit.Units.Percentage);
                                break;

                            default:
                                i.Width  = new DistanceUnit(20, DistanceUnit.Units.Percentage);
                                i.Height = new DistanceUnit(20, DistanceUnit.Units.Percentage);
                                break;
                            }
                        }

                        wp.NamedWatermarks["img"] = new Layer[] { i };
                        rsWM = new ResizeSettings("watermark=text,img;");
                    }
                    else
                    {
                        rsWM = new ResizeSettings("watermark=text");
                    }
                    rsWM.Format        = rs.Format;
                    rsWM.Mode          = rs.Mode;
                    rsWM.Scale         = rs.Scale;
                    rsWM.Quality       = rs.Quality;
                    rsWM.Width         = rs.Width;
                    rsWM.Height        = rs.Height;
                    wp.keepAspectRatio = true; //Maintains the aspect ratio of the watermark itself.
                    //Build the Image
                    c.CurrentImageBuilder.Build(SourceFile, DestinationFolder, rsWM);
                }
            }
            catch (Exception e)
            {
            }
        }