/// <summary> /// Adds a watermark icon to an image and saves it to a new file. /// </summary> /// <param name="originalImageFilePath">Path to the image that will get a watermark.</param> /// <param name="watermarkFilePath">Path to the image with the watermark.</param> /// <param name="outputFilePath">Path where the watermarked image will be created.</param> /// <param name="position">The position of the watermark on the image.</param> public static void AddWatermarkIcon(string originalImageFilePath, string watermarkFilePath, string outputFilePath, PositionInImage position) { Image img = Image.FromFile(originalImageFilePath); Image watermark = Image.FromFile(watermarkFilePath); int x = 0; int y = 0; switch (position) { case PositionInImage.TopLeft: x = 0; y = 0; break; case PositionInImage.TopRight: x = img.Width - watermark.Width; y = 0; break; case PositionInImage.BottomLeft: x = 0; y = img.Height - watermark.Height; break; case PositionInImage.BottomRight: x = img.Width - watermark.Width; y = img.Height - watermark.Height; break; } using (var g = Graphics.FromImage(img)) { g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.PixelOffsetMode = PixelOffsetMode.HighQuality; g.DrawImage(watermark, x, y, watermark.Width, watermark.Height); } img.Save(outputFilePath); }
/// <summary> /// Adds a watermark text to the right bottom corner of an image. /// </summary> /// <param name="filePath">The filepath to the image.</param> /// <param name="value">The text to write as watermark.</param> /// <param name="position">The position of the text on the image.</param> public static void AddWatermarkString(string filePath, string value, string outputPath, PositionInImage position) { Image img = Image.FromFile(filePath); using (var g = Graphics.FromImage(img)) { Font f = new Font("Calibri", 15); Brush b = new SolidBrush(Color.Black); g.SmoothingMode = SmoothingMode.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; g.PixelOffsetMode = PixelOffsetMode.HighQuality; int x = 15; int y = 15; switch (position) { case PositionInImage.TopLeft: break; case PositionInImage.TopRight: x = img.Width - (int)Math.Ceiling(g.MeasureString(value, f).Width); break; case PositionInImage.BottomLeft: y = img.Height - 25; break; case PositionInImage.BottomRight: x = img.Width - (int)Math.Ceiling(g.MeasureString(value, f).Width); y = img.Height - 25; break; } g.DrawString(value, f, b, x, y); } img.Save(outputPath); }