[转]asp.net 2.0 将文字转成图片(文字生成图片)

注:最近在做一些企业网站模板,像公司名称,导航菜单等多处为文字的地方,用字体图片比用网页字体来得好看很多,但是不同公司,公司名称和导航菜单等都会有所不同,不可能手动一个个去给它们做文字图片。用水印生成的图片也不好看。所以到网上找了许久,找到了个.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;
      }
}

---------------------------    代码结束 -----------------------------

原文地址:https://www.cnblogs.com/gyxdbk/p/1432577.html