• [转]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;
          }
    }

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

  • 相关阅读:
    layer-list:Android中layer-list使用详解
    Nexus6p:正在下载系统更新,没有进度
    转:浅谈char类型范围
    C/C++/Java中的volatile关键字
    C++中的mutable关键字
    C++中的typedef typename 作用
    C++中的友元函数和友元类
    用flashfxp做ftp镜像同步
    python读取caffemodel文件
    py-faster-rcnn几个辅助脚本
  • 原文地址:https://www.cnblogs.com/gyxdbk/p/1432577.html
Copyright © 2020-2023  润新知