Scripts 学盟
标题:
C# 给照片加水印
[打印本页]
作者:
俊俊
时间:
2011-8-19 10:05:45
标题:
C# 给照片加水印
昨天给朋友写了个小工具,是用来给照片加水印的,(在此顺便鄙视一下我那个用相机无法设置照片加水印的朋友)
首先,我们定义三个变量,分别用来保存水印的颜色、字体、和日期格式
//颜色
Color coF = Color.FromArgb(252, 91, 5);
//字体
Font fnT = new Font("Verdana", 32);
//日期格式
string DataFormat = "yyyy-MM-dd";
复制代码
好,下来就是最关键的加水印的方法了
private void AddFile()
{
try
{
//从this.textBox1.Text(路径)查找后缀为jpg的文件,搜索模式为当前目录和所有子目录
string[] PhotoFile = Directory.GetFiles(this.textBox1.Text, "*.jpg", SearchOption.AllDirectories);
//保存文件名
string pName = "";
//保存后缀,其实没必要,我只找了JPG,但是万一以后要找其他类型的图片呢?还是留着吧
string extension = "";
//本来这个地方我想用foreach的,但是想到下面用了委托,我要传递一个当前个数出去赋值给进度条,我又改为for了
for (int a = 0; a < PhotoFile.Length; a++)
{
pName = Path.GetFileNameWithoutExtension(PhotoFile[a]);
extension = Path.GetExtension(PhotoFile[a]);
//从文件获取一个Image对象
Image image = Image.FromFile(PhotoFile[a]);
//从这个Image获取一个Graphics ,准备写字上去!
Graphics g = Graphics.FromImage(image);
// 写字上去之前,要准备好 字体、颜色、要写的文字、位置
Font f = fnT;
Brush b = new SolidBrush(Color.Red);
// 注意这里的File.GetCreationTime方法,这个是获取文件的创建时间哦~
string addText = File.GetCreationTime(PhotoFile[a]).ToString(DataFormat);
//这个地方我觉得是整个程序最关键的地方了,
//g.MeasureString方法计算了文字的size,也就是在这个字体、字号的前提条件下,要写的文字的分辨率
//只有计算出了这个,才能把文字准确的“画”在图片上
SizeF sizeF = g.MeasureString(addText, fnT);
float width = sizeF.Width;
float height = sizeF.Height;
//这里计算下日期的分辨率是否比图片大,如果大了,就用默认的小字体写在左上角,否则,就写在右下角
if (image.Width - width > 0 && image.Height - height > 0)
{
//g.DrawImage(image, image.Width - 250, image.Height - 80, image.Width, image.Height);
g.DrawString(addText, f, b, image.Width - width, image.Height - height);
}
else
{
f = new Font("Verdana", 12);
g.DrawImage(image, 0, 0, image.Width, image.Height);
}
//记得用完以后要释放!
g.Dispose();
//写好的图片要保持,要不然你写了干嘛?
string newPath = this.textBox2.Text + "\\New_" + pName + extension;
image.Save(newPath);
image.Dispose();
//在这里把工作状态传递出去,让人知道你现在工作干道哪了
this.Invoke(new deNowInfo(NowInfo), a, PhotoFile.Length);
}
}
catch (Exception ex)
{
this.Invoke(new deShowMessage(ShowMessage), ex.Message);
}
}
复制代码
在这里下载完整程序~
记得评分哈
照片加水印.rar
(393.46 KB, 下载次数: 1)
2011-8-19 10:04:20 上传
下载次数: 1
附件:
照片加水印.rar
(2011-8-19 10:04:20, 393.46 KB) / 下载次数 1
http://www.iscripts.org/forum.php?mod=attachment&aid=OTM4fGE3NTQ4ZjhhfDE3MzcxMzYyNTB8MHww
作者:
混混@普宁.中国
时间:
2011-8-19 11:15:36
好,加分!
以前写 asp 还要搞什么 水印组件,麻烦
欢迎光临 Scripts 学盟 (http://www.iscripts.org/)
Powered by Discuz! X2