安哥网络 发表于 2013-8-13 17:23:54

C# 防采集 文字生成图片



using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.IO;

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

    /// <summary>
    /// 生成文字图片
    /// </summary>
    /// <param name="familyName">字体</param>
    /// <param name="fontSize">字号</param>
    /// <param name="targetString">生成内容</param>
    public void SetFontImage(string familyName,int fontSize,string targetString)
    {
      //创建位图对象
      Bitmap objBitmap = null;
      //创建绘图图面对象
      Graphics g = null;
      //创建并初始化字体对象
      Font stringFont = new Font(familyName, fontSize, FontStyle.Bold);
      //文本布局对象
      StringFormat stringFormat = new StringFormat();
      //设置文本格式
      stringFormat.FormatFlags = StringFormatFlags.NoWrap;
      //绘图过程
      try
      {
            //实例化位图对象
            objBitmap = new Bitmap(1, 1);
            //实例化绘图图面对象,将位图对象放入图面中
            g = Graphics.FromImage(objBitmap);
            //获取欲绘制文字图片的高宽
            SizeF stringSize = g.MeasureString(targetString, stringFont);
            int nWidth = (int)stringSize.Width;
            int nHeight = (int)stringSize.Height;
            //获取高宽后释放无用的图面对象资源和位图对象资源
            g.Dispose();
            objBitmap.Dispose();

            //根据已获得的高宽实例化新的位图对象
            objBitmap = new Bitmap(nWidth, nHeight);
            //根据新的位图对象实例化新的绘图图面对象
            g = Graphics.FromImage(objBitmap);
            //填充图片,可以指定背景颜色,开始坐标和图片高宽,指定文本呈现样式
            g.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, nWidth, nHeight));
            g.TextRenderingHint = TextRenderingHint.AntiAlias;
            //开始绘制
            g.DrawString(targetString, stringFont, new SolidBrush(Color.Black), new PointF(0, 0), stringFormat);
            //生成图片
            objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
         
      }
      catch (Exception ee)
      {
            Response.Write(ee.ToString());
      }
      finally
      {
            if (null != g) g.Dispose();
            if (null != objBitmap) objBitmap.Dispose();
            Response.End();
      }
    }

本文摘自http://hi.baidu.com/zjali/item/1fff021e7c5e9cf787ad4eeb

ksftg 发表于 2014-11-23 07:37:41

好贴,绝对要支持下!!~~











static/image/common/sigline.gif
电源适配器

豹杰长房 发表于 2017-9-17 10:22:55

顶一下吧~ 很少见的好帖了











static/image/common/sigline.gif
银行官网
页: [1]
查看完整版本: C# 防采集 文字生成图片