一、创建一个类
源代码如下
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
/// <summary>
/// ImageRight 的摘要说明
/// 给图片增加版权信息
/// </summary>
public class ImageRight
{
public ImageRight()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void createCopyRight(string fileName,string rightName,string fontName,float fontSize,Brush fontColor)
{
//不是Jpg或者gif就返回
if (!fileName.ToLower().EndsWith("jpg") && !fileName.ToLower().EndsWith("gif"))
return;
//透明Gif不能处理
if (GetImageFormat(fileName) == System.Drawing.Imaging.ImageFormat.Gif)
return;
try
{
System.Drawing.Image image = System.Drawing.Image.FromFile(fileName);
int w = image.Width;
int h = image.Height;
//图片太小不用处理了。
if (image.Width < 300 || image.Height < 100)
return;
Graphics g = Graphics.FromImage(image);
//写版权文字
//g.DrawString("图片上传于 FORUMS.CODER.CN", new Font("宋体", 9), Brushes.White, new PointF(w - 180, h - 20));
g.DrawString(rightName, new Font(fontName,fontSize), fontColor, new PointF(w - 180, h - 20));
g.Save();
Bitmap bmp = new Bitmap(image);
//保存临时文件
bmp.Save(fileName + ".tmp", GetImageFormat(fileName));
g.Dispose();
image.Dispose();
bmp.Dispose();
//下面是将临时文件重命名
System.IO.File.Delete(fileName);
System.IO.File.Copy(fileName + ".tmp", fileName);
System.IO.File.Delete(fileName + ".tmp");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
System.Drawing.Imaging.ImageFormat GetImageFormat(string FileName)
{
string ext = System.IO.Path.GetExtension(FileName);
System.Drawing.Imaging.ImageFormat fmt = System.Drawing.Imaging.ImageFormat.Jpeg;
switch (ext.ToLower())
{
case "jpg":
fmt = System.Drawing.Imaging.ImageFormat.Jpeg;
break;
case "jpeg":
goto case "jpg";
case "gif":
fmt = System.Drawing.Imaging.ImageFormat.Gif;
break;
case "bmp":
fmt = System.Drawing.Imaging.ImageFormat.Bmp;
break;
case "png":
fmt = System.Drawing.Imaging.ImageFormat.Png;
break;
}
return fmt;
}
}
二、调用
protected void Button1_Click(object sender, EventArgs e)
{
try
{
ImageRight i = new ImageRight();
i.createCopyRight(Server.MapPath("Portugal.jpg"),"制作单位:BB-CIMS","宋体",15,Brushes.Red);
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
三、测试环境:WinXPSP2+VS.NET2005