今天工作不是很多,看到了前一段时间公司组织外出旅游的照片。突发奇想做了一个给图片加标签的小程序!
Posted on 2006-06-06 15:48 Matildawaltzer 阅读(380) 评论(0) 编辑 收藏 举报
主要的代码是:
外部使用的时候,简单设置一下就可以了!
例如:
自娱自乐一下!
/// <summary>
///
/// </summary>
/// <param name="strImgpath">需要加标签的图片的路径</param>
/// <param name="strTag">标签文字</param>
/// <param name="strFontName">字体的名字</param>
/// <param name="strFontSize">字体的大小</param>
/// <returns></returns>
public MemoryStream ImgAddTag(string strImgpath, string strTag, string strFontName, float fFontSize)
{
if(!File.Exists(strImgpath))
return null;
if(strTag.Trim() == string.Empty && strTag.Trim().Length == 0)
return null;
MemoryStream ms = new MemoryStream();
using(System.Drawing.Image image = System.Drawing.Image.FromFile(strImgpath))
using(System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(image, image.Width, image.Height))
using(System.Drawing.Graphics g = Graphics.FromImage(bitmap))
{
float fSize = fFontSize; //字体的大小
float fWidth = strTag.Length*fSize; //文本的长度
//为定义矩形做准备
//float fRectangleX = 0;
//float fRectangleY = 0;
float fRectangleX = image.Width - strTag.Length*fSize; //矩形的坐标位置X
float fRectangleY = image.Height - fSize*2f; //矩形的坐标位置Y
float fRectangleWidth = strTag.Length*fSize;
float fRectangleHeigth = fSize*2f;
System.Drawing.RectangleF rectanflef = new RectangleF(fRectangleX, fRectangleY, fRectangleWidth, fRectangleHeigth);
System.Drawing.Font font = new Font(strFontName, fSize); //定义字体
//画文字使用 Brush 画笔对象的抽象基类
System.Drawing.Brush Bwhite = new SolidBrush(Color.White); //SolidBrush 定义单色的画刷,画刷用于填充图形形状.
//画背景使用 Brush 画笔对象的抽象基类
System.Drawing.Brush Bblack = new SolidBrush(Color.Black);
//FillRectangle由一对坐标,一个宽度和一个高度指定的矩形的内部
g.FillRectangle(Bblack, fRectangleX, fRectangleY, fRectangleWidth, fRectangleHeigth);
g.DrawString(strTag, font, Bwhite, rectanflef);
bitmap.Save(ms, ImageFormat.Jpeg);
}
return ms;
}
///
/// </summary>
/// <param name="strImgpath">需要加标签的图片的路径</param>
/// <param name="strTag">标签文字</param>
/// <param name="strFontName">字体的名字</param>
/// <param name="strFontSize">字体的大小</param>
/// <returns></returns>
public MemoryStream ImgAddTag(string strImgpath, string strTag, string strFontName, float fFontSize)
{
if(!File.Exists(strImgpath))
return null;
if(strTag.Trim() == string.Empty && strTag.Trim().Length == 0)
return null;
MemoryStream ms = new MemoryStream();
using(System.Drawing.Image image = System.Drawing.Image.FromFile(strImgpath))
using(System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(image, image.Width, image.Height))
using(System.Drawing.Graphics g = Graphics.FromImage(bitmap))
{
float fSize = fFontSize; //字体的大小
float fWidth = strTag.Length*fSize; //文本的长度
//为定义矩形做准备
//float fRectangleX = 0;
//float fRectangleY = 0;
float fRectangleX = image.Width - strTag.Length*fSize; //矩形的坐标位置X
float fRectangleY = image.Height - fSize*2f; //矩形的坐标位置Y
float fRectangleWidth = strTag.Length*fSize;
float fRectangleHeigth = fSize*2f;
System.Drawing.RectangleF rectanflef = new RectangleF(fRectangleX, fRectangleY, fRectangleWidth, fRectangleHeigth);
System.Drawing.Font font = new Font(strFontName, fSize); //定义字体
//画文字使用 Brush 画笔对象的抽象基类
System.Drawing.Brush Bwhite = new SolidBrush(Color.White); //SolidBrush 定义单色的画刷,画刷用于填充图形形状.
//画背景使用 Brush 画笔对象的抽象基类
System.Drawing.Brush Bblack = new SolidBrush(Color.Black);
//FillRectangle由一对坐标,一个宽度和一个高度指定的矩形的内部
g.FillRectangle(Bblack, fRectangleX, fRectangleY, fRectangleWidth, fRectangleHeigth);
g.DrawString(strTag, font, Bwhite, rectanflef);
bitmap.Save(ms, ImageFormat.Jpeg);
}
return ms;
}
外部使用的时候,简单设置一下就可以了!
例如:
private void button1_Click(object sender, System.EventArgs e)
{
string strGuid = System.Guid.NewGuid().ToString();
using(System.Drawing.Bitmap bitmap = new Bitmap(ImgToTag.Instance.ImgAddTag(PicPath, DateTime.Now.ToString("yyyy-MM-dd") + " 美丽的海南岛", FontName, FontSize)))
{
bitmap.Save(string.Format(@"e:\{0}.jpg", strGuid));
}
pictureBox1.Image =System.Drawing.Image.FromFile(string.Format(@"e:\{0}.jpg", strGuid));
}
{
string strGuid = System.Guid.NewGuid().ToString();
using(System.Drawing.Bitmap bitmap = new Bitmap(ImgToTag.Instance.ImgAddTag(PicPath, DateTime.Now.ToString("yyyy-MM-dd") + " 美丽的海南岛", FontName, FontSize)))
{
bitmap.Save(string.Format(@"e:\{0}.jpg", strGuid));
}
pictureBox1.Image =System.Drawing.Image.FromFile(string.Format(@"e:\{0}.jpg", strGuid));
}
自娱自乐一下!