注:最近在做一些企业网站模板,像公司名称,导航菜单等多处为文字的地方,用字体图片比用网页字体来得好看很多,但是不同公司,公司名称和导航菜单等都会有所不同,不可能手动一个个去给它们做文字图片。用水印生成的图片也不好看。所以到网上找了许久,找到了个.net 文字转图片程序,可以设置要转换的文字,文字字体、大小、颜色、样式等,测试后效果不错,特将其转来与大家分享。
《asp.net 2.0 将文字转成图片》
出处 :http://blog.csdn.net/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;
}
}
--------------------------- 代码结束 -----------------------------