gd下自行设计字体库

原创 2005年01月17日 20:17:00

         对于在验证码图片中实现扭曲、变形、错位等干扰方案,gd库中实在是没什么合适的函数可用。我用gdImageResized对局部区域进行放大,可是效果很差,图案变形的太厉害了。
         我现在只有自己编几套变形的字体了。
           下面是0-9十个数字的一个字体。
/**********************************************************/
/* 定于了一种新的字体gdFontBin。  */
#include "gd.h"

   BGD_EXPORT_DATA_PROT gdFontPtr gdFontBin;
   BGD_DECLARE(gdFontPtr) gdFontGetBin(void);

gdFont gdFontBinRep = {
  10,                                                                  /* 其中的字符数 */
  48,                                                                  /* 起始字符(按ASCII码顺序) */
  18,                                                                  /* 字符宽度(像素) */
  30,                                                                  /* 字符高度(像素) */
  gdFontBinData                                              /* 字型数据 */
};

BGD_EXPORT_DATA_IMPL gdFontPtr gdFontBin = &gdFontBinRep;

BGD_DECLARE(gdFontPtr) gdFontGetBin (void)
{
  return gdFontBin;
}

/******************************************************/
/* 在每个象素上画出字形 */

char gdFontWuData[] = {

/* Char 0 的字型*/
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
  0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
  0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
  0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

/* 略..... */

};
/***********************************************/

         这样,就能做出自己想要的字体,如要变形,扭曲,就在数据区中画出变形,扭曲的图案。
        多做几种变形,扭曲的字体,在程序中随机选择,就可以在程序中实现随机变形扭曲。

php gd库扩展生成带中文字体的png图片

如何根据GD库生成带有中文的按钮图片?也可以生成验证码图片用
  • shi_yi_fei
  • shi_yi_fei
  • 2016年10月11日 16:04
  • 2026

PHP 使用GD库生成验证码 在图像上绘制汉字

PHP 并不仅限于创建 HTML 输出, 它也可以创建和处理包括 GIF, PNG, JPEG, WBMP 以及 XPM 在内的多种格式的图像。 更加方便的是,PHP 可以直接将图像数据流输出到浏览器...
  • aoshilang2249
  • aoshilang2249
  • 2015年07月16日 22:46
  • 2670

opensns数据表结构

1.opensns_actions 2.opensns_action_limit 3.opensns_action_log 4.opensns_addons 5.opensns_adv 6....
  • qq_27231343
  • qq_27231343
  • 2016年04月28日 09:26
  • 1684

VB2008控件数组全解(绝对经典,代码为本人自行设计并调试运行成功~~)

VB2008控件数组(绝对经典~~) 1.VB2008控件数组不再支持(但还可引用vb6中的数组,并按vb6规则处理) 在 Visual Basic 6.0 中,控件数组可用于管理窗体上的控件;它...
  • zqpgood
  • zqpgood
  • 2011年11月20日 16:13
  • 2932

学生社团管理系统 任务:通过此系统可以实现如下功能(包含但不限于以下功能,可自行设计): 1、社团信息包括:社团编号、社团名称、成立时间…… 2、学生信息包括:学号、姓名、性别、年级、专业…… 3

#include #include #include #include #include #include #include #include #include #define DAT_FIL...
  • lhy_freshman
  • lhy_freshman
  • 2017年04月09日 17:30
  • 248

自行设计NPAPI开发框架

经历了一年有余的插件开发,对插件的工作机制也比较熟悉了,在开发插件的过程中使用sdk中的np_entry.cpp、npn_gate.cpp、npp_gate.cpp以及pluginbase.h这几个文...
  • z6482
  • z6482
  • 2012年12月21日 14:57
  • 9148

自行设计MFC向导对话框

MFC没有提供现成的向导对话框,而是提供了CPropertySheet和CPropertyPage两个类,分别表示向导容器、向导页。为了制作出向导风格的对话框,需要从CPropertySheet继承一...
  • jslmes
  • jslmes
  • 2016年07月15日 08:42
  • 1001

生产实习 自行设计的仿真图

  • 2013年04月14日 18:57
  • 25KB
  • 下载

读取raw图像 自行设计卷积kernel,对图像卷积,然后非盲反卷积实现

  • 2013年06月06日 09:09
  • 998B
  • 下载

自行设计OS

  • 2015年12月04日 16:54
  • 320KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gd下自行设计字体库
举报原因:
原因补充:

(最多只允许输入30个字)