C#给图片加文字水印

    public class TxtWaterMark
    {
        public enum WaterPositionMode
        {
            LeftTop,//左上
            LeftBottom,//左下
            RightTop,//右上
            RightBottom,//右下
            Center,//中间
            Other//其他,若选此项AddWaterText方法内自己把xValue和yValue穿进去
        }
        /// <summary>
        /// 给图片加文字水印
        /// </summary>
        /// <param name="oldpath">图片地址</param>
        /// <param name="savepath">加上文字水印以后图片保存地址</param>
        /// <param name="watertext">水印文字</param>
        /// <param name="position">水印位置</param>
        /// <param name="fontName">水印文字字体</param>
        /// <param name="fontSize">水印文字大小</param>
        /// <param name="color">水印文字颜色</param>
        /// <param name="alpha">水印文字透明度</param>
        /// <param name="isBold">水印文字是否加粗</param>
        /// <param name="xValue">水印位置position Other选项下设置</param>
        /// <param name="yValue">水印位置position Other选项下设置</param>
        public static void AddWaterText(string oldpath, string savepath, string watertext, WaterPositionMode position, string fontName, int fontSize, string fontColor, int alpha, bool isBold, float xValue = 0, float yValue = 0)
        {
            Image image = Image.FromFile(oldpath);
            Bitmap bitmap = new Bitmap(image.Width, image.Height);
            Graphics graphics = Graphics.FromImage(bitmap);
            graphics.Clear(Color.White);
            graphics.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);
            Font font = new Font(fontName, fontSize, FontStyle.Bold);
            if (!isBold)
            {
                font = new Font(fontName, fontSize);
            }

            SizeF ziSizeF = new SizeF();
            ziSizeF = graphics.MeasureString(watertext, font);
            float x = 0f;
            float y = 0f;
            switch (position)
            {

                case WaterPositionMode.LeftTop:
                    x = ziSizeF.Width / 2f;
                    y = 0f;
                    break;
                case WaterPositionMode.LeftBottom:
                    x = ziSizeF.Width / 2f;
                    y = image.Height - ziSizeF.Height;
                    break;
                case WaterPositionMode.RightTop:
                    x = image.Width * 1f - ziSizeF.Width / 2f;
                    y = 0f;
                    break;
                case WaterPositionMode.RightBottom:
                    x = image.Width - ziSizeF.Width;
                    y = image.Height - ziSizeF.Height;
                    break;
                case WaterPositionMode.Center:
                    x = image.Width / 2;
                    y = image.Height / 2 - ziSizeF.Height / 2;
                    break;
                case WaterPositionMode.Other:
                    x = xValue + ziSizeF.Width / 2f;
                    y = yValue;
                    break;
            }
            try
            {
                StringFormat stringFormat = new StringFormat { Alignment = StringAlignment.Center };
                SolidBrush solidBrush = new SolidBrush(Color.FromArgb(alpha < 0 ? 0 : alpha, 0, 0, 0));
                graphics.DrawString(watertext, font, solidBrush, x + 1f, y + 1f, stringFormat);
                SolidBrush brush = new SolidBrush(Color.FromArgb(alpha < 0 ? 0 : alpha, ColorTranslator.FromHtml(fontColor)));
                graphics.DrawString(watertext, font, brush, x, y, stringFormat);
                solidBrush.Dispose();
                brush.Dispose();
                bitmap.Save(savepath, ImageFormat.Png);
            }
            catch (Exception e)
            {


            }
            finally
            {
                bitmap.Dispose();
                image.Dispose();
            }

        }
    }
原文地址:https://www.cnblogs.com/blazeZzz/p/9558050.html