1. #region 添加水印
  2. /// <summary>
  3. /// 添加文字水印
  4. /// </summary>
  5. /// <param name="image"></param>
  6. /// <param name="text"></param>
  7. /// <param name="fontSize">字体大小</param>
  8. /// <param name="rectX">水印开始X坐标(自动扣除文字宽度)</param>
  9. /// <param name="rectY">水印开始Y坐标(自动扣除文字高度</param>
  10. /// <param name="opacity">0-255 值越大透明度越低</param>
  11. /// <param name="externName">文件后缀名</param>
  12. /// <returns></returns>
  13. public static Image AddTextToImg(Image image, string text, float fontSize, float rectX, float rectY, int opacity, string externName)
  14. {
  15.  
  16. Bitmap bitmap = new Bitmap(image, image.Width, image.Height);
  17.  
  18. Graphics g = Graphics.FromImage(bitmap);
  19.  
  20. //下面定义一个矩形区域
  21. float rectWidth = text.Length * (fontSize + );
  22. float rectHeight = fontSize + ;
  23.  
  24. //声明矩形域
  25.  
  26. RectangleF textArea = new RectangleF(rectX - rectWidth, rectY - rectHeight, rectWidth, rectHeight);
  27.  
  28. Font font = new Font("微软雅黑", fontSize, FontStyle.Bold); //定义字体
  29.  
  30. Brush whiteBrush = new SolidBrush(Color.FromArgb(opacity, , , )); //画文字用
  31.  
  32. g.DrawString(text, font, whiteBrush, textArea);
  33.  
  34. MemoryStream ms = new MemoryStream();
  35.  
  36. //保存图片
  37. switch (externName)
  38. {
  39. case ".jpg":
  40. bitmap.Save(ms, ImageFormat.Jpeg);
  41. break;
  42. case ".gif":
  43. bitmap.Save(ms, ImageFormat.Gif);
  44. break;
  45. case ".png":
  46. bitmap.Save(ms, ImageFormat.Png);
  47. break;
  48. default:
  49. bitmap.Save(ms, ImageFormat.Jpeg);
  50. break;
  51. }
  52.  
  53. Image h_hovercImg = Image.FromStream(ms);
  54.  
  55. g.Dispose();
  56.  
  57. bitmap.Dispose();
  58.  
  59. return h_hovercImg;
  60.  
  61. }
  62.  
  63. /// <summary>
  64. /// 添加图片水印
  65. /// </summary>
  66. /// <param name="image"></param>
  67. /// <param name="text"></param>
  68. /// <param name="rectX">水印开始X坐标(自动扣除图片宽度)</param>
  69. /// <param name="rectY">水印开始Y坐标(自动扣除图片高度</param>
  70. /// <param name="opacity">透明度 0-1</param>
  71. /// <param name="externName">文件后缀名</param>
  72. /// <returns></returns>
  73. public static Image AddImgToImg(Image image, Image watermark, float rectX, float rectY, float opacity, string externName)
  74. {
  75.  
  76. Bitmap bitmap = new Bitmap(image, image.Width, image.Height);
  77.  
  78. Graphics g = Graphics.FromImage(bitmap);
  79.  
  80. //下面定义一个矩形区域
  81. float rectWidth = watermark.Width + ;
  82. float rectHeight = watermark.Height + ;
  83.  
  84. //声明矩形域
  85. RectangleF textArea = new RectangleF(rectX - rectWidth, rectY - rectHeight, rectWidth, rectHeight);
  86.  
  87. Bitmap w_bitmap = ChangeOpacity(watermark, opacity);
  88.  
  89. g.DrawImage(w_bitmap, textArea);
  90.  
  91. MemoryStream ms = new MemoryStream();
  92.  
  93. //保存图片
  94. switch (externName)
  95. {
  96. case ".jpg":
  97. bitmap.Save(ms, ImageFormat.Jpeg);
  98. break;
  99. case ".gif":
  100. bitmap.Save(ms, ImageFormat.Gif);
  101. break;
  102. case ".png":
  103. bitmap.Save(ms, ImageFormat.Png);
  104. break;
  105. default:
  106. bitmap.Save(ms, ImageFormat.Jpeg);
  107. break;
  108. }
  109.  
  110. Image h_hovercImg = Image.FromStream(ms);
  111.  
  112. g.Dispose();
  113.  
  114. bitmap.Dispose();
  115. return h_hovercImg;
  116.  
  117. }
  118.  
  119. /// <summary>
  120. /// 改变图片的透明度
  121. /// </summary>
  122. /// <param name="img">图片</param>
  123. /// <param name="opacityvalue">透明度</param>
  124. /// <returns></returns>
  125. public static Bitmap ChangeOpacity(Image img, float opacityvalue)
  126. {
  127.  
  128. float[][] nArray ={ new float[] {, , , , },
  129.  
  130. new float[] {, , , , },
  131.  
  132. new float[] {, , , , },
  133.  
  134. new float[] {, , , opacityvalue, },
  135.  
  136. new float[] {, , , , }};
  137.  
  138. ColorMatrix matrix = new ColorMatrix(nArray);
  139.  
  140. ImageAttributes attributes = new ImageAttributes();
  141.  
  142. attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
  143.  
  144. Image srcImage = img;
  145.  
  146. Bitmap resultImage = new Bitmap(srcImage.Width, srcImage.Height);
  147.  
  148. Graphics g = Graphics.FromImage(resultImage);
  149.  
  150. g.DrawImage(srcImage, new Rectangle(, , srcImage.Width, srcImage.Height), , , srcImage.Width, srcImage.Height, GraphicsUnit.Pixel, attributes);
  151.  
  152. return resultImage;
  153. }
  154.  
  155. #endregion
  1. Image img = Image.FromStream(file.InputStream);
  2. string externName = Path.GetExtension(file.FileName);
  3.  
  4. //添加文字水印
  5. System.Drawing.Image t_img = Upload.AddTextToImg(img, "我是水印",14.0f, img.Width - , img.Height - , , externName);
  6.  
  7. //添加图片水印
  8. Image watermark =
  9. Image.FromFile(Server.MapPath("/content/images/common/logo_main.png"));//水印图片
  10. System.Drawing.Image t2_img = Upload.AddImgToImg(img, watermark, img.Width - , img.Height - , 0.5f, externName);

C# 给图片添加透明的文字、图片水印的更多相关文章

  1. Windows操作 - Photoshop为图片添加透明立体水印

    原文地址:http://design.yesky.com/photoshop/252/2427752.shtml 本文我们介绍用Photoshop为图片添加透明立体水印的方法和技巧. 原图: 打开原图 ...

  2. C#一些常用的图片操作方法:生成文字图片 合并图片等

    生成文字图片: /// <summary> /// 生成文字图片 /// </summary> /// <param name="text">& ...

  3. 如何在github中插入图片,链接,图片链接(给图片加上链接),文字+图片链接,的实战分享!

    如何在github中插入图片,链接,图片链接(给图片加上链接),文字+图片链接,的实战分享! markdown 1.文字链接: [link-Text](link-URL) [home](https:/ ...

  4. ie6下:png图片不透明 和 背景图片为png的节点的内部标签单击事件不响应

    1.png图片不透明 少量图片时:使用滤镜: _background:none; _filter:prodig:DXImageTransform.Microsoft.AlphaImageLoader( ...

  5. 关于IOS某图片添加控件,图片从相册或拍照保存后,再次进入时点击放大图无法显示的问题

    某图片添加控件: https://github.com/XZTLLQ/LQPhotoPickerDemo 问题: 标题已说明 代码块: NSArray *alAssetUrl =(NSMutableA ...

  6. Flexslider图片轮播、文字图片相结合滑动切换效果

    Flexslider是一款基于的jQuery内容滚动插件.它能让你轻松的创建内容滚动的效果,具有非常高的可定制性.开发者可以使用Flexslider轻松创建各种图片轮播效果.焦点图效果.图文混排滚动效 ...

  7. Flexslider插件实现图片轮播、文字图片相结合滑动切换效果

    插件下载: 点击下载 密码: fbeg Flexslider具有以下特性: 支持滑动和淡入淡出效果. 支持水平.垂直方向滑动. 支持键盘方向键控制. 支持触控滑动. 支持图文混排,支持各种html元素 ...

  8. 图片添加border 不占用图片的大小

    因为设计稿中的分割线大多分为两种情况:1.在图片右侧:2.在图片右侧+下方. 那么使用伪类before和after以及绝对定位很容易在不改变原布局的情况使图片按照设计稿输出和保留分割线. 例div.i ...

  9. PS添加透明立体水印

    PS: CS2 本文我们介绍用Photoshop为图片添加透明立体水印的方法和技巧. 原图: Duplicate Layer,并输入文字: 设置Layer->Layer Style->Be ...

随机推荐

  1. Windows10 官方原版镜像下载途径 Label:win10解决方案

    https://www.microsoft.com/en-gb/software-download/windows10ISO 设置浏览标签为手机以避免跳转,下载即可  或者手机打开该网址,获取下载链接 ...

  2. 使用Tomcat+Redis来实现集群部署中的Session共享问题

    一.工作中因为要使用到Tomcat集群部署,此时就涉及到了Session共享问题,主要有三种解决方案: 1.使用数据库来存储Session 2.使用Cookie来存储Session 3.使用Redis ...

  3. leetcode868

    class Solution { public: int binaryGap(int N) { ; vector<int> V; while (N) { )//N&1==1,表示最 ...

  4. nat123安装启动教程帮助

    转自:http://www.nat123.com/Pages_17_291.jsp 本文就nat123安装启动可能遇到的问题及与安全狗影响处理. 下载安装nat123客户端安装包.第一次安装使用,可选 ...

  5. <%@ page import=""%>的用法

    转自:https://blog.csdn.net/huihui870311/article/details/455642111 <jsp:directive.page import=" ...

  6. c# tcp udp 的使用场景

    之前用tcp实现了一个案例(远程协助),后来我考虑用udp去实现它,于是又研究了下udp,我发现理论上udp可以做到,但是有一些问题不知道会不会有瓶颈 我参照网上写了一个简单的示例如下 服务端接收.发 ...

  7. zookpeer的安装与配置

    zookpeer集群搭建: 集群搭建过程简介: 这里准3台服务器做zk(zookpeer下面简称zk)集群搭建: zk集群由一个leader和两个follower组成,对外端口默认为2181端口,关于 ...

  8. python 生成器的理解和总结

    1. 生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成.但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数 ...

  9. 配置环境是程序员的第一步 -- Xshell 6 免费版下载安装

    Xshell 是一个强大的安全终端模拟软件,通常用来连接云主机,远程控制云主机. 很多人都不知道 Xshell 有专门为家庭和学校用户提供的免费版,只需要填个用户名和邮箱即可. 免费版链接:https ...

  10. SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务嵌套”

    误区 #26: SQL Server中存在真正的“事务嵌套”错误 嵌套事务可不会像其语法表现的那样看起来允许事务嵌套.我真不知道为什么有人会这样写代码,我唯一能够想到的就是某个哥们对SQL Serve ...