AI智能
改变未来

ASP.NET 生成图片水印、验证码文字的字体

         在ASP.NET生成图片时中常使用到生成水印文字,生成验证码文字等,这些图片上的文字有时候我们需要设置更好看的字体,实现的方法一般是调用服务器 C:/windows/fonts/ 目录下的字体,对于服务器中没有的字体就需要我们在服务器上面安装,显然不是很方便。另外一中方法是:把字体库文件放在我们的项目中,生成图片中的文字时调用项目的字体库。但是,这种方法使用具有局限性,对于WEB页面的字体就无能为力了。关于WEB页面调用自定义的字体,详见上面的《一、让用户使用我设计的网页字体》 。

a.      下载字体文件,并加入到项目中,例如:有一个项目的登录验证码功能用到的字体是“Andy”字体,这里就需要下载Andy的字体库,“andyb.ttf”。

b.      把字体库加入到项目中,例如:加入到根目录下的“Share/Fonts/”下面。

c.      在生成验证码的后台文件中,创建的字体,这里创建一个方法来生成一个自定义的字体。

/// <summary>/// 创建一个定义的字体,这个字体是程序级别创建的/// </summary>/// <returns>返回:字体,这里为Andy字体</returns>private Font CreateFamily(){PrivateFontCollection pfc = new PrivateFontCollection();//string fontpath = HttpRuntime.AppDomainAppPath + \"Share/Fonts/andyb.ttf\";    //这种方法也能获取到项目的绝对路径,所以还要加上文件的相对路径string fontpath = System.Web.HttpContext.Current.Server.MapPath(\"~/Share/Fonts/andyb.ttf\");  //获取字体路径//pfc.AddFontFile(@\"C:/windows/fonts/andyb.ttf\");  //这种方法是获取服务器中的字体,不过需要服务器字体库中存在改字体文件pfc.AddFontFile(fontpath);//添加到字体Font font = new System.Drawing.Font(pfc.Families[0], 20, System.Drawing.FontStyle.Bold);    //创建一个自定义的字体return font;}

关键三个地方:

1.PrivateFontCollection 类命名空间在 System.Drawing.Text 下面这个方面提供一个创建字体库的数组对象,

2.需要通过绝对路径获取字体库的路径这里提供两种方法:

Application.StartupPath+\”Share/Fonts/andyb.ttf\”

System.Web.HttpContext.Current.Server.MapPath(\”~/Share/Fonts/andyb.ttf\”)

3.创建一个Font字体

注意:这种方法也可以获取C:/windows/fonts/ 目录下面的字体,前提是字体存在的情况下。

  • 点赞
  • 收藏
  • 分享
  • 文章举报

z0106551513发布了0 篇原创文章 · 获赞 0 · 访问量 530私信关注

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » ASP.NET 生成图片水印、验证码文字的字体