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 = , float yValue = )
{
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(, , image.Width, image.Height), , , 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 / ;
y = image.Height / - ziSizeF.Height / ;
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 < ? : alpha, , , ));
graphics.DrawString(watertext, font, solidBrush, x + 1f, y + 1f, stringFormat);
SolidBrush brush = new SolidBrush(Color.FromArgb(alpha < ? : 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();
} }
}

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

  1. PHP给图片加文字水印

    <?php /*给图片加文字水印的方法*/ $dst_path = 'http://f4.topitme.com/4/15/11/1166351597fe111154l.jpg'; $dst = ...

  2. Java图片加文字水印

    Java图片加文字水印 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.I ...

  3. PHP图片加文字水印和图片水印方法

    文字水印 $dst_path = 'dst.jpg'; //创建图片的实例$dst = imagecreatefromstring(file_get_contents($dst_path)); //打 ...

  4. PHP图片加文字水印和图片水印方法(鉴于李老师博客因没加水印被盗,特搜集的办法。希望能有用!)

    $dst_path = 'dst.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); //打上文字 ...

  5. php图片添加文字水印方法汇总

    方法一: <?php header("content-type:text/html;charset=utf-8"); //指定图片路径 $src = "img/a. ...

  6. php给图片添加文字水印方法汇总

    在php中要给图片加水印我们需要给php安装GD库了,这里我们不介绍GD库安装,只介绍怎么利用php给图片添加文字水印的4种方法的汇总.有需要的小伙伴可以参考下. 1: 面向过程的编写方法 1 2 3 ...

  7. ASP.NET(C#)图片加文字、图片水印,神啊,看看吧

    ASP.NET(C#)图片加文字.图片水印 一.图片上加文字: //using System.Drawing; //using System.IO; //using System.Drawing.Im ...

  8. Asp.net 上传图片添加半透明图片或者文字水印的方法

    主要用到System.Drawing 命名空间下的相关类,如Brush.Image.Bitmap.Graphics等等类 Image类可以从图片文件创建Image的实例,Bitmap可以从文件也可以从 ...

  9. 利用php给图片添加文字水印--面向对象与面向过程俩种方法的实现

    1: 面向过程的编写方法 //指定图片路径 $src = '001.png'; //获取图片信息 $info = getimagesize($src); //获取图片扩展名 $type = image ...

随机推荐

  1. @contextmanager

    with的作用,类似try...finally...,提供一种上下文机制. 要应用with语句的类,其内部必须提供两个内置函数__enter__以及__exit__ ,   前者在主体代码执行前执行, ...

  2. Android模糊图像

    在Android中.我们能够实现非常多非常酷的处理图片的效果. 在2014年某次会议的讲演<图像的魔力>中,我介绍了当中的一部分. 当中的一项技术是怎样模糊图像.演示样例代码是使用Rend ...

  3. 一些IPC常用头文件

    //my_err.h#include <errno.h> /* for definition of errno */ #include <stdarg.h> /* ISO C ...

  4. 黄聪:自定义WordPress顶部管理工具条的技巧(转)

    使用WordPress开发网站项目,很多时候都需要对进行后台定制,今天倡萌主要分享下自定义顶部管理工具条的使用技巧. 注:如无特殊说明,请将下面的代码添加到主题的 functions.php  或者插 ...

  5. HDOJ5883(欧拉路)

    The Best Path Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  6. 「自己开发直播」实现nginx-rtmp-module多频道输入输出与权限控制

    之前写了一篇文章,利用nginx和nginx-rtmp-module实现直播. 不过,之前只是做到了能够直播而已,只能一个人推流,并没有实现多人多频道输入输出,也没有权限控制,只要知道rtmp的URL ...

  7. webpack快速入门(二):使用入门

    继续之前请确认你已经安装了nodejs 安装.初始化: 然后找个目录新建名为webpack-demo的文件夹,然后在命令行下进入该目录,执行以下命令: npm init -y npm install ...

  8. 学习:Dom4j和Xpath

    1.DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和JAXP. DOM4J使 ...

  9. Django前端的文本编辑器,滑动登陆

    文本编译器 # 添加文章 url(r'^addarticle/$', views.addarticle), # 利用文本编辑器添加文章 def addarticle(request): ''' 添加文 ...

  10. 卷积神经网络之VGG网络模型学习

    VGG:VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION 牛津大学 visual geometry group(VG ...