六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 1367|回复: 2

C# 防采集 文字生成图片

[复制链接]
 楼主| 发表于 2013-8-13 17:23:54 | 显示全部楼层 |阅读模式


  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. using System.Drawing;
  11. using System.Drawing.Imaging;
  12. using System.Drawing.Text;
  13. using System.IO;

  14. /// <summary>
  15. /// 本页面只作为一个图片被调用
  16. /// </summary>
  17. public partial class _Default : System.Web.UI.Page
  18. {
  19.     protected void Page_Load(object sender, EventArgs e)
  20.     {
  21.         SetFontImage(Request.QueryString["familyName"], Convert.ToInt32(Request.QueryString["fontSize"]), Request.QueryString["targetString"]);
  22.     }

  23.     /// <summary>
  24.     /// 生成文字图片
  25.     /// </summary>
  26.     /// <param name="familyName">字体</param>
  27.     /// <param name="fontSize">字号</param>
  28.     /// <param name="targetString">生成内容</param>
  29.     public void SetFontImage(string familyName,int fontSize,string targetString)
  30.     {
  31.         //创建位图对象
  32.         Bitmap objBitmap = null;
  33.         //创建绘图图面对象
  34.         Graphics g = null;
  35.         //创建并初始化字体对象
  36.         Font stringFont = new Font(familyName, fontSize, FontStyle.Bold);
  37.         //文本布局对象
  38.         StringFormat stringFormat = new StringFormat();
  39.         //设置文本格式
  40.         stringFormat.FormatFlags = StringFormatFlags.NoWrap;
  41.         //绘图过程
  42.         try
  43.         {
  44.             //实例化位图对象
  45.             objBitmap = new Bitmap(1, 1);
  46.             //实例化绘图图面对象,将位图对象放入图面中
  47.             g = Graphics.FromImage(objBitmap);
  48.             //获取欲绘制文字图片的高宽
  49.             SizeF stringSize = g.MeasureString(targetString, stringFont);
  50.             int nWidth = (int)stringSize.Width;
  51.             int nHeight = (int)stringSize.Height;
  52.             //获取高宽后释放无用的图面对象资源和位图对象资源
  53.             g.Dispose();
  54.             objBitmap.Dispose();

  55.             //根据已获得的高宽实例化新的位图对象
  56.             objBitmap = new Bitmap(nWidth, nHeight);
  57.             //根据新的位图对象实例化新的绘图图面对象
  58.             g = Graphics.FromImage(objBitmap);
  59.             //填充图片,可以指定背景颜色,开始坐标和图片高宽,指定文本呈现样式
  60.             g.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, nWidth, nHeight));
  61.             g.TextRenderingHint = TextRenderingHint.AntiAlias;
  62.             //开始绘制
  63.             g.DrawString(targetString, stringFont, new SolidBrush(Color.Black), new PointF(0, 0), stringFormat);
  64.             //生成图片
  65.             objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
  66.            
  67.         }
  68.         catch (Exception ee)
  69.         {
  70.             Response.Write(ee.ToString());
  71.         }
  72.         finally
  73.         {
  74.             if (null != g) g.Dispose();
  75.             if (null != objBitmap) objBitmap.Dispose();
  76.             Response.End();
  77.         }
  78.     }

复制代码
本文摘自http://hi.baidu.com/zjali/item/1fff021e7c5e9cf787ad4eeb
该会员没有填写今日想说内容.

升级  79.33%

0

主题

0

主题

0

主题

举人

Rank: 3Rank: 3

积分
438
发表于 2014-11-23 07:37:41 | 显示全部楼层
好贴,绝对要支持下!!~~












电源适配器
回复

使用道具 举报

升级  42%

0

主题

0

主题

0

主题

童生

Rank: 1

积分
21
发表于 2017-9-17 10:22:55 | 显示全部楼层
顶一下吧~ 很少见的好帖了












银行官网
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表