在 PHP 中用描点法“绘制”中文

上传人:ji****72 文档编号:45690369 上传时间:2018-06-18 格式:PDF 页数:8 大小:104.50KB
返回 下载 相关 举报
在 PHP 中用描点法“绘制”中文_第1页
第1页 / 共8页
在 PHP 中用描点法“绘制”中文_第2页
第2页 / 共8页
在 PHP 中用描点法“绘制”中文_第3页
第3页 / 共8页
在 PHP 中用描点法“绘制”中文_第4页
第4页 / 共8页
在 PHP 中用描点法“绘制”中文_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《在 PHP 中用描点法“绘制”中文》由会员分享,可在线阅读,更多相关《在 PHP 中用描点法“绘制”中文(8页珍藏版)》请在金锄头文库上搜索。

1、在 PHP 中用描点法“绘制”中文 在 PHP 中用描点法“绘制”中文 内容摘要:前言 现在,越来越多的人喜欢上网了,越来越多的人拥有了自己的个人主页。随 着各种自动化软件工具的出现, 制作网页越来越简单。 但, 由于特效随处可得, 创新的东西, 越来越少。说不定,哪天,你会发现某个网站上的计数器和自己的一模一样。网页越做越老 练。网页上的. 前言前言 现在,越来越多的人喜欢上网了,越来越多的人拥有了自己的个人主页。随着各种自动化软件工具的出现,制作网页越来越简单。 但, 由于特效随处可得,创新的东西,越来越少。说不定,哪天,你会发现某个网站上的计数器和自己的一模一样。网页越做越老练。网页上的

2、东西,也越来越多,越来越丰富。 设问设问 在网页上,如果我要添加一个计数器: 以前,那就去空间提供商那里要个链接,或其他地方去复制个地址,但这一些,总归是别人做的,好不好,你是没有太多的发言权的,只能一个一个地找。 在网页上,我要将一些信息发布出去: 假如信息是文本,做一个新页面,加个链接; 是数据,做一个新页面,加个链接: 可要是这些数据经常更新,甚至,每小时、每分钟,都可能会改变,你是否愿意守在电脑前,不停修改、上传呢?(咱可不是商业网站,没有人愿意为你而烧钱。) 而留言板、聊天室、论坛,这些,决不是单靠 HTML 和 java script 就能搞定的。 为了实现更多的自动控制,可以使用

3、 CGI(Common Gateway Interface)程序来实现这些功能。 软件需求软件需求 PHP:GD Library 配置支持 PHP 的服务器。我用 OmniHTTPd Professional 对于计数器和实时数据统计、发布,我们可以用图片来完成。在图片中输出文字。 在 PHP 中,要创建一个图片,并在上面显示点内容,基本步骤如下: 上面示例,在 400300 的图片上,自点(10,10)开始,绘制 12 磅的“1234567890“。你有没有注意到这张图片的大小是:251 字节!你也可以试试其他的输出格式。 图片的大小,与图片中非背景象素点数有关,跟输出多少象素无关。 然而,

4、有一个问题。 你可以用 imagestring()输出如下的信息: imagestring($im,1,0,0,“abcdefghijklmnopqrstuvwxyz0123456789!#$,./“,$red); 可是,你无法正确输出中文! imagestring($im,1,0,0,“ 啊“,$red); 你看到的,决不是中文!而是乱码。 PHP 默认的字符集是 UTF-8,而简体中文是 GB2312。 如何解决?!如何解决?! 为了解决这个问题,你可以让 PHP 加载扩展模块 php_iconv.dll(UNIT 下的后缀名是.SO),不过,有时候可能不能正常工作。本来,我要把一段测试代

5、码放上来,可这次,怎么弄都没有成功。为了避免错误,我还是不把它们放上来了。 但,最致命的,如果你的空间服务商关闭了该扩展模块,或者,甚至禁止了加载模块的 DL()函数,那,你就只能跟中文 BYE-BYE 了。 还好,还有其他办法。 可以通过字符映射,将预先转换好的码表中字符输出来。但,你需要一张码表!或者,手工绘制每一个中文的每一个点!感觉怎么样?! 好,来吧,我们一起来画字! 画字,首先要知道怎么画。 初中的简单函数,学过吧?要画出函数的图形,做过吧?算出某点的坐标,然后连接两相邻点。这种方法,叫描点法。 我们要做的,是尽量多地将点算出来,然后在相应坐标显示出来。 你是否听说过点阵打印机、点

6、阵汉字? 在输出汉字时,它们是用一个个点来表示的。 在某个坐标上显示一个某种颜色的点的函数是: int imagesetpixel ( resource image, int x, int y, int color) 假定我要在坐标(100,100)处显示一个白色的点,那么,只需如下代码: 也就是说,我们只要获取某个汉字的所有点的信息,我们就能够通过这个函数,输出那个汉字。 在文件 chs16.fon 里,保存的,是国标区位码表(国家标准信息交换用汉字编码基本字符集 GB-2312)。它是汉字的点阵字库。(WIN98 系统中,此文件在 c:windowscommand 下。如果你要把它放在 U

7、NIX 系统下使用,请注意大小写。如果没有,你可以在文末找到链接。) 它是 MSDOS 时代的,但,好东西,还是应该拿出来一用的。 从 chs16.fon 里,我们可以读取汉字的点阵数据。每个汉字,都是由 1616 个点构成的。笔划走过的地方,点的值为 1,否则为 0;每个点占用一个位,每 8 个点构成一个字节。那么,一个汉字,就需要(1616832)字节。 下面这个实例,是为了说明字符点阵的表示方法。 这里定义了一个 88 的矩阵,显示了一个字母 C,白色的方块用 0 表示,黑色方块用 1表示,那么,这八行图形的代码分别是: 行 二进制表示 十六进制表示 0 00000000 0x00 1

8、00111110 0x3E 2 01110000 0xE0 3 01110000 0xE0 4 01110000 0xE0 5 01110000 0xE0 6 00111110 0x3E 7 00000000 0x00 要输出这些点的话,就需要先画第一行,然后第二行、第三行到最后一行。 用一个循环: for($hang=0;$hang “区位码“进行索引、查找。 前面已经讲了一个汉字,在表中要占用 32 字节,所以,我们定义了一个含有 32 个元素的数组: $buffer=array(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,

9、0,0,0,0,0, 0,0); 用来保存从字库读出的 32 个字节数据。 接下来的问题,某一个字符,到底保存在文件的什么位置呢? 由于一个汉字用了 32 个字节,而 GB-2312 区位码表表有 94 行、94 列,那么,只要知道该字符在表中是第几个,再乘以 32 就行了。 所以定义偏移量: $offset=(94*($qh-1)+($wh-1)*32; $qh 表示区(qu)、$wh 表示位(wei);减 1,是因为 PHP 从 0 开始计数。 位置找到,就只需要用 fseek()函数定到码表的这个位置,然后读 32 字节到$buffer就行了。 另外,由于中文是由两个字节组成,而前面给出的点阵示例是 8 位,一个字节,所以,画点的代码要修改一下: for($hang=0;$hang(7-$k) $string=substr($string,2); /中文由两个字节表示,所以,输出一个汉字后,就要去掉两个字节。 $x=24; /一个汉字输出结束, 空开一点, 给下一个汉字。 因为这个汉字是 1616点,那么,$x 的值设为 16,就够了。但,太挤了不是? fclose($fp); 下面,我给出一个测试实例: 对于这个函数,我们还可以进行扩充,以实现不同的效果。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号