《asp.net 2.0 将文字转成图片》
出处 :http://blog.youkuaiyun.com/LEOlws/archive/2006/12/30/1469370.aspx
作者:甜饼旺
--------------------------- 代码开始 -----------------------------
CompNamePic.aspx(图片要显示在哪个页面中的图片框中)
CompNamePic.Text = "需要显示的文字";

----- ----- ----- ----- ----- ----- ----- -----

CompNamePic.ascx.cs(用于显示自定义文字图片的控件):
using System;
public partial class Shop_UC_CompNamePic : System.Web.UI.UserControl
...{
private string _Text = null;

...#region
public string Text
...{
get
...{
if (_Text == null || _Text.Trim().Length <= 0)
...{
return "";
}
return _Text;
}
set ...{ _Text = value; }
}
#endregion
protected void Page_Load(object sender, EventArgs e)
...{
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
...{
imgText.ImageUrl = "CompNamePic.aspx?Text=" + Server.UrlEncode(Text);
base.Render(writer);
}
}


----- ----- ----- ----- ----- ----- ----- -----

CompNamePic.aspx.cs(将生成的图片打印到网页):
using System;
public partial class Shop_CompNamePic : System.Web.UI.Page
...{
...#region
private string CompName
...{
get
...{
if (Request.QueryString["Text"] == null || Request.QueryString["Text"].Trim().Length <= 0)
...{
return "";
}
return Server.UrlDecode(Request.QueryString["Text"]);
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
...{
CreateImgText cit = new CreateImgText(CompName);
Response.BinaryWrite(cit.CreateTextByte());
}
}



----- ----- ----- ----- ----- ----- ----- -----


CreateImgText.cs(用于将文字转换成图片的类):
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Text;
using System.Windows.Forms;
/**//**//**//// <summary>
/// 创建图片文字
/// </summary>
public class CreateImgText
...{
private string _Text = null;
private Color _TextColor = Color.Empty;
private FontStyle _TextStyle = FontStyle.Bold;
private int _Width;
private int _Height;

...#region 
/**//**//**//// <summary>
/// 要显示的文本
/// </summary>
public string Text
...{
get
...{
if (_Text == null || _Text.Trim().Length <= 0)
...{
return "图片加载中";
}
return _Text;
}
set ...{ _Text = value; }
}
/**//**//**//// <summary>
/// 文本颜色
/// </summary>
public Color TextColor
...{
get 
...{
if (_TextColor == Color.Empty)
...{
return Color.Black;
}
return _TextColor;
}
set ...{ _TextColor = value; }
}
/**//**//**//// <summary>
/// 文本样式 加粗 倾斜 普通等
/// </summary>
public FontStyle TextStyle
...{
get ...{ return _TextStyle; }
set ...{ _TextStyle = value; }
}
/**//**//**//// <summary>
/// 图片的宽
/// </summary>
public int Width
...{
get ...{ return _Width; }
//set { _Width = value; }
}
/**//**//**//// <summary>
/// 图片的高
/// </summary>
public int Height
...{
get ...{ return _Height; }
//set { _Height = value; }
}
#endregion

...#region
public CreateImgText()
...{
}
public CreateImgText(string strText)
...{
_Text = strText;
}
public CreateImgText(string strText,Color TextColor)
...{
_Text = strText;
_TextColor = TextColor;
}
public CreateImgText(string strText, Color TextColor, FontStyle TextStyle)
...{
_Text = strText;
_TextColor = TextColor;
_TextStyle = TextStyle;
}
#endregion

/**//**//**//// <summary>
/// 创建输出的文字流
/// </summary>
/// <returns></returns>
public byte[] CreateTextByte()
...{
Font font = new Font("黑体", 20, TextStyle);
Brush brush = new SolidBrush(TextColor);
// 计算文字的宽和高
Size sizeText = TextRenderer.MeasureText(Text, font);
_Width = sizeText.Width;
_Height = sizeText.Height;
// 创建一个位图
Bitmap bmp = new Bitmap(sizeText.Width, sizeText.Height);

// 设置画布
Graphics grph = Graphics.FromImage(bmp);
// 指定消除锯齿 文字
grph.TextRenderingHint = TextRenderingHint.AntiAlias;
// 清除画布
grph.Clear(Color.White);
// 在画布上画图案 内容,字体,画刷,坐标
grph.DrawString(Text, font, brush, 0, 0);
// 新建一个内存流
MemoryStream stream = new MemoryStream();
// 将图片保存在内存流中
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] byteBuf = new byte[stream.Length];
byteBuf = stream.ToArray();
//资源回收
bmp.Dispose();
grph.Dispose();
stream.Close();
return byteBuf;
}
}

--------------------------- 代码结束 -----------------------------
本文介绍如何使用 ASP.NET 2.0 实现将文本转换为图片的功能。通过创建自定义控件及类,实现动态生成带有文本的图片,并将其输出到网页上。文中提供了详细的代码示例。
1485

被折叠的 条评论
为什么被折叠?



