示例#1
0
        public static void Mark(string originImagePath, string watermarkImagePath, string outputFolder, string fileName, SlantWatermark slantWatermark = null, TextUnderLogo textUnderLogo = null)
        {
            if (!Directory.Exists(outputFolder))
            {
                Directory.CreateDirectory(outputFolder);
            }

            string newImagePath = Path.Combine(outputFolder, fileName);

            Image newImage;

            using (Image originImage = Image.FromFile(originImagePath)
                   , watermarkImage = Image.FromFile(watermarkImagePath))
            {
                newImage = Mark(originImage, watermarkImage, slantWatermark, textUnderLogo);
            }

            //放在这里确保newImagePath与originImagePath相同时能正常保存
            newImage.Save(newImagePath, ImageFormat.Jpeg);
            newImage.Dispose();
        }
示例#2
0
        public static void Mark(string originImagePath, string watermarkImagePath, string outputFolder, SlantWatermark slantWatermark = null, TextUnderLogo textUnderLogo = null)
        {
            string fileName = Path.GetFileName(originImagePath);

            Mark(originImagePath, watermarkImagePath, outputFolder, fileName, slantWatermark, textUnderLogo);
        }
示例#3
0
        public static Image Mark(Image originalImage, Image waterMark, SlantWatermark slantWatermark = null, TextUnderLogo textUnderLogo = null)
        {
            const int minWidthRate  = 2;
            const int minHeightRate = 3;

            if (originalImage.Width / waterMark.Width < minWidthRate || originalImage.Height / waterMark.Height < minHeightRate)
            {
                return(new Bitmap(originalImage));
            }

            Image newImage = new Bitmap(originalImage);

            using (Graphics gfx = Graphics.FromImage(newImage))
            {
                gfx.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                gfx.SmoothingMode     = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

                if (slantWatermark != null)
                {
                    AddSlantWatermark(gfx, newImage.Width, newImage.Height, slantWatermark);
                }

                int marginBottom     = 20;
                int marginLeft       = 20;
                int logoMarginBottom = marginBottom;

                if (textUnderLogo != null)
                {
                    SizeF fontSize = gfx.MeasureString(textUnderLogo.Text, textUnderLogo.Font);

                    logoMarginBottom += (int)fontSize.Height;

                    gfx.DrawString(textUnderLogo.Text, textUnderLogo.Font, textUnderLogo.Brush,
                                   originalImage.Width - fontSize.Width - marginLeft, originalImage.Height - fontSize.Height - marginBottom);
                }

                gfx.DrawImage(waterMark,
                              new Rectangle(originalImage.Width - waterMark.Width - marginLeft,
                                            originalImage.Height - waterMark.Height - logoMarginBottom, waterMark.Width, waterMark.Height),
                              0, 0, waterMark.Width, waterMark.Height, GraphicsUnit.Pixel);
            }

            return(newImage);
        }