zoukankan      html  css  js  c++  java
  • c# 图文添加文字斜水印

    项目中有个添加水印的需求,需要给图片铺满斜水印。

    网上搜了半天全是添加在图片上、下、左、右的案例。

    于是按照网上的某一段案例自己修改了一些代码。

     1                     Bitmap bitmap = new Bitmap(image);
     2                     int degree = 45;
     3                     //图片的宽度与高度
     4                     int width = bitmap.Width, height = bitmap.Height;
     5                     //水印文字
     6                     string text = string.Format("仅供“{0}”使用", projectName);
     7                     Graphics g = Graphics.FromImage(bitmap);
     8                     g.DrawImage(bitmap, 0, 0);
     9                     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
    10                     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
    11                     g.DrawImage(image, new Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel);
    12                     Font crFont = new Font("微软雅黑", 22, FontStyle.Bold);
    13                     SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(60, 137, 131, 131));
    14                     //将原点移动 到图片中点
    15                     g.TranslateTransform(0, height);
    16                     //以原点为中心 转 -45度
    17                     g.RotateTransform(-45);
    18                     for (int i = 0; i < 50; i++)
    19                     {
    20                         g.DrawString(text, crFont, semiTransBrush, new PointF(0 - i * 300, 100 + i * 300));
    21                         g.DrawString(text, crFont, semiTransBrush, new PointF(150 - i * 300, 500 + i * 300));
    22                         g.DrawString(text, crFont, semiTransBrush, new PointF(650 - i * 300, 600 + i * 300));
    23                     }
    24                     //保存文件
    25                     bitmap.Save(sImgPath, ImageFormat.Jpeg);
    26                     return sImgPath;

    本来想法是画一个 g.DrawString从上至下的斜水印,铺满图片左边三分之一。

    再画两个g.DrawString各占三分二,这样水印会铺满整张图片,效果也不错。

    但项目的需求是水印文字是动态变化的,导致水印长度会长会短,长了第一个水印的尾部会把第二个水印覆盖掉一点。

    这样就非常难看,调试了几天还是没有进展,最后只能画三个水印,让三条水印交错不在一个水平线上,缺点就是不太铺满图片。

    希望有高手有更简便的方法可以交流一下。

    下面是加完水印的效果图

    github https://github.com/hano7758
  • 相关阅读:
    NET Core中实现一个Token base的身份认证
    自定义一个服务器感受一下管道是如何监听、接收和响应请求的
    把商品卖给用户
    Mac版Visual Studio预览版
    Docker实战
    大数据的四大特点
    ElasticSearch Nosql
    Oracle和Elasticsearch数据同步
    关于MySql链接url参数的设置 专题
    linux date
  • 原文地址:https://www.cnblogs.com/jokerSun/p/11176336.html
Copyright © 2011-2022 走看看