这是个非常有用的功能,这个功能可以将网站的关键文字信息写出图片,不然别人采集。
功能页面的代码如下:
这个页面负责接受参数生成图片,注意再这个时候这个页面本身就是一个图片了,调用他就像调用image那样,调用方法在最下面
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();
}
}
}
调用方法:
在其他的页面中|
< td style="width: 16px">
<img src="Default.aspx?familyName=宋体&fontSize=12&targetString=我做的生成文字图片通用类" id="img1" runat="server"/>asdfasdfad</td>
就是吧那个生成图片的页面当做图片一样调用,传入他要的参数就可以了