最近有个需求给图片加文字斜文字水印。并且需要铺满图片。
网上找的添加水印都是横的,并且是固定位置,只能自己写
[Asm] 纯文本查看 复制代码 Bitmap bitmap = new Bitmap(image);
//图片的宽度与高度
int width = bitmap.Width, height = bitmap.Height;
//水印文字
Graphics g = Graphics.FromImage(bitmap);
g.DrawImage(bitmap, 0, 0);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.DrawImage(image, new Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel);
Font crFont = new Font("微软雅黑", 22, FontStyle.Bold);
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(255, 137, 131, 131));
//将原点移动 到图片中点
g.TranslateTransform(-80, 150);
//以原点为中心 转 -45度
g.RotateTransform(-45);
for (int i = 0; i < 50; i++)
{
g.DrawString(text, crFont, semiTransBrush, new PointF(0 - i * 300, 100 + i * 300));
g.DrawString(text, crFont, semiTransBrush, new PointF(150 - i * 300, 500 + i * 300));
g.DrawString(text, crFont, semiTransBrush, new PointF(650 - i * 300, 600 + i * 300));
}
//保存文件
bitmap.Save(sImgPath, ImageFormat.Jpeg);
这代码的缺陷是,图片加的文字水印可能长,可能短,
如果图片分辨率高水印可能就占图片的左三分之一,分辨率低文字水印就出现前几个字。
有没有大神有更好的添加水印方法 |