C#给图片加文字水印
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#给图片加文字水印的更多相关文章
- PHP给图片加文字水印
<?php /*给图片加文字水印的方法*/ $dst_path = 'http://f4.topitme.com/4/15/11/1166351597fe111154l.jpg'; $dst = ...
- Java图片加文字水印
Java图片加文字水印 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.I ...
- PHP图片加文字水印和图片水印方法
文字水印 $dst_path = 'dst.jpg'; //创建图片的实例$dst = imagecreatefromstring(file_get_contents($dst_path)); //打 ...
- PHP图片加文字水印和图片水印方法(鉴于李老师博客因没加水印被盗,特搜集的办法。希望能有用!)
$dst_path = 'dst.jpg'; //创建图片的实例 $dst = imagecreatefromstring(file_get_contents($dst_path)); //打上文字 ...
- php图片添加文字水印方法汇总
方法一: <?php header("content-type:text/html;charset=utf-8"); //指定图片路径 $src = "img/a. ...
- php给图片添加文字水印方法汇总
在php中要给图片加水印我们需要给php安装GD库了,这里我们不介绍GD库安装,只介绍怎么利用php给图片添加文字水印的4种方法的汇总.有需要的小伙伴可以参考下. 1: 面向过程的编写方法 1 2 3 ...
- ASP.NET(C#)图片加文字、图片水印,神啊,看看吧
ASP.NET(C#)图片加文字.图片水印 一.图片上加文字: //using System.Drawing; //using System.IO; //using System.Drawing.Im ...
- Asp.net 上传图片添加半透明图片或者文字水印的方法
主要用到System.Drawing 命名空间下的相关类,如Brush.Image.Bitmap.Graphics等等类 Image类可以从图片文件创建Image的实例,Bitmap可以从文件也可以从 ...
- 利用php给图片添加文字水印--面向对象与面向过程俩种方法的实现
1: 面向过程的编写方法 //指定图片路径 $src = '001.png'; //获取图片信息 $info = getimagesize($src); //获取图片扩展名 $type = image ...
随机推荐
- Wordpress主题站
深度剖析WordPress主题结构 http://down.chinaz.com/try/201106/640_1.htm wordpress工作原理 http://blog.csdn.net/liu ...
- bzoj1018[SHOI2008]堵塞的交通traffic——线段树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1018 巧妙的线段树.维护矩阵四个角的连通性. 考虑两个点连通的可能路径分成3部分:两点左边. ...
- saiku迁移至mysql步骤
saiku数据库的表和用户默认创建是在启动项目的时候,通过初始化 saiku-beans.xml 中的 h2database 这个bean执行org.saiku.service.Database类的i ...
- Java-Runoob:Java 正则表达式
ylbtech-Java-Runoob:Java 正则表达式 1.返回顶部 1. Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某 ...
- Oracle关于date类型数据的总结
往Oracle数据库中插入日期型数据(to_date的用法) INSERT INTO FLOOR VALUES ( to_date ( '2007-12-20 18:31:34' , 'YYY ...
- line 1: syntax error: unexpected word (expecting ")")
编译出来的程序在arm平台上运行时,出现下面的错误. / # wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0 /bin/wpa_supplicant: ...
- node的express中间件之session
虽然session与cookie是分开保存的.但是session中的数据经过加密处理后默认保存在一个cookie中.因此在使用session中间件之前必须使用cookieParser中间件. app. ...
- 使用Ajax异步上传文件
之前上传文件都是用表单form设置post请求和enctype类型: <form id="upload_form"action="" method=&qu ...
- PKU1988磁铁
Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 16258 Accepted: 5579 Ca ...
- CentOS7.6安装Maven
官网下载地址:http://maven.apache.org/download.cgi 第一步:软件下载安装 进行安装目录:cd /opt/software (如果目录不存在,请先创建目录) 下载二进 ...