给服务器上的指定的图片添加文字水印

本文介绍了一种在图片上添加文字水印的方法,通过使用C#编程语言实现。该方法可以根据指定的位置放置水印文字,并提供了多种位置选择,如顶部中间、底部右等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 public class ImageWater {

        public enum WaterPosition
        {
            TopRight,
            TopMiddle,
            TopLeft,
            BottomRight,
            BottomMiddle,
            BottomLeft
        }

        /// <summary>
        /// 添加文字水印
        /// </summary>
        /// <param name="picPath">图片在服务器上的绝对路径</param>
        /// <param name="words">要向图片上添加的水印文字</param>
        public static void AddWordWaterToImg(string picPath, string words, WaterPosition wposition)
        {
            Image image = Image.FromFile(picPath);

            Bitmap b = new Bitmap(image.Width, image.Height,
             PixelFormat.Format24bppRgb);

            Graphics g = Graphics.FromImage(b);
            g.Clear(Color.White);
            g.SmoothingMode = SmoothingMode.HighQuality;
            g.InterpolationMode = InterpolationMode.High;

            g.DrawImage(image, 0, 0, image.Width, image.Height);

            Font f = new Font("宋体", 12);
            Brush brush = new SolidBrush(System.Drawing.Color.Green);

            SizeF sizef = new SizeF();
            sizef = g.MeasureString(words, f);//获取文字的大小

            float xpos = 12;
            float ypos = 12;
            switch (wposition)
            {
                case WaterPosition.TopLeft:
                    xpos = 12;
                    ypos = 12;
                    break;
                case WaterPosition.TopMiddle:
                    xpos = image.Width / 2 - sizef.Width / 2;
                    ypos = 12;
                    break;
                case WaterPosition.TopRight:
                    xpos = image.Width - (sizef.Width+xpos);
                    ypos = 12;
                    break;
                case WaterPosition.BottomLeft:
                    xpos = 12;
                    ypos = image.Height - (sizef.Height+ypos);
                    break;
                case WaterPosition.BottomMiddle:
                    xpos = image.Width / 2 - sizef.Width / 2;
                    ypos = image.Height - (sizef.Height + ypos);
                    break;
                case WaterPosition.BottomRight:
                    xpos = image.Width - (sizef.Width + xpos);
                    ypos = image.Height - (sizef.Height + ypos);
                    break;
                default:
                    break;
            }

            g.DrawString(words, f, brush, xpos, ypos);

            image.Dispose();
            b.Save(picPath);
            b.Dispose();
        }        
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值