Web Server程序编写学习笔记(三)getpng.c

原创 2004年12月31日 13:22:00

12月31日,12:44:58
终于完成了用C生成PNG格式图片的程序,总结下:
1.使用gd-1.8.4图像处理库中的函数,主要步骤为:
创建一变量存放空白图像-〉匹配图形的颜色-〉为图像填充以上颜色-〉创建PNG图像-〉破坏图像流以释放内存。
2.gd-1.8.4与1.8.3以前的函数有一些不同首先每个函数名前都加了gd两个字;其次gdImageString(),gdImageChar()等这个函数中参数变了,以前表示字体的参数是“int font“,其值为1-5,现在表示字体的参数变成了“gdFontPtr font“,gdFontPtr是一个指向gdFont结构的指针:
typedef struct {
 /* # of characters in font */
 int nchars;
 /* First character is numbered... (usually 32 = space) */
 int offset;
 /* Character width and height */
 int w;
 int h;
 /* Font data; array of characters, one row after another.
  Easily included in code, also easily loaded from
  data files. */
 char *data;
} gdFont;
/* Text functions take these. */
typedef gdFont *gdFontPtr;
这样一来使用gdImageString(),gdImageChar()等函数时这个表示字体的参数就不能使简单的写1-5了。
到底怎么办呢?我在这个问题上花了很久的时间。后来在一个老外的主页上看到他说一种字体nchars=256;offset=0;w=8;h=15;data[]={0,0,0,0,........0,0,0,};我就将这些值赋给一个gdFontPtr结构的变量,结果还是不行。不过受他的启发,我在gd.h同一目录下发现有几个文件,gdfontg.h,gdfontl.h等等,其实这些文件就是每个帮我们定义了一种字体,gdFontGiant,gdFontLarge,gdFontSmall等等。这样的话,在用gdImageString(),gdImageChar()等函数时这个表示字体的参数就可以写gdFontGiant,gdFontLarge,gdFontSmall。大概就相当于原来的数字吧。
************************************************************************************
^_^,呵呵,终于搞定了。下面的函数将任意字符串生成为绿底红字的png图片,并加入了一定的干扰线。

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <gd.h>
#include <gdfontg.h>

int
getpng(char *string,int strlen)
{
int back,word,front,len,sx,sy,i;
char *str;
gdImagePtr newimg;
FILE *pngfp;

str=string;
len=strlen;
sx=10+len*9;
sy=20;
newimg=gdImageCreate(sx,sy); /* 创建一变量存放空白图像,像素sx*sy */
pngfp=fopen("mypng.png","wb");
back=gdImageColorAllocate(newimg,0,255,128); /* 匹配图形的颜色 */
word=gdImageColorAllocate(newimg,255,0,128); /* 匹配图形的颜色 */
front=gdImageColorAllocate(newimg,255,64,128);/* 匹配图形的颜色 */
gdImageFill(newimg,0,0,back);   /* 为图像填充以上颜色 */
gdImageString(newimg,gdFontGiant,5,1,str,word);/* 输出字符串图像 */
 for(i=0;i<len;(i=i+2))
  gdImageLine(newimg,(5+i*9),0,(23+i*9),20,front); /*产生一些干绕线 */
gdImagePng(newimg,pngfp);   /* 创建PNG图像 */
gdImageDestroy(newimg);    /* 破坏图像流以释放内存 */

close(pngfp);
return;
}
OK.GoodLuck all!!!

Web入侵安全测试与对策学习笔记之(三)——攻击客户机之绕过对输入选项的限制

客户机上的代码非常容易遭篡改,重要的任务应当在服务器上运行。 攻击4:绕过对输入选项的限制 如何使用这种攻击? 在提供了任何输入方式的情况下,就可以使用绕过对输入选项的限制攻击。在多数应用程序中...
  • aovenus
  • aovenus
  • 2012年08月25日 11:52
  • 1832

Web Server程序编写学习笔记(五)性能测试

        使用apache自带的HTTP服务器性能测试工具ab对上述程序在FreeBSD和windows(Cygwin)下的运行情况进行测试。        网路条件:局域网,192.168.1...
  • hustxxb
  • hustxxb
  • 2005年01月08日 13:09
  • 978

Web Server程序编写学习笔记(四)源代码

        本程序是一个提供特殊服务的Web Server。该程序是一个Daemon程序,用单进程+I/O多路转换(select)的方式接收Http的Get请求,请求中是一个字符串(可以是数字或者...
  • hustxxb
  • hustxxb
  • 2005年01月08日 03:16
  • 1144

Web Server程序编写学习笔记(二)

12月30日,10:58:05通宵一晚上,终于搞定了,主程序的结构差不多定下来了。生成PNG格式图片的C程序也在经历了N次愚蠢的低级错误后诞生了。gcc通不过是因为没有加上正确的参数,正确的使用是:“...
  • hustxxb
  • hustxxb
  • 2004年12月30日 11:12
  • 790

Web Server程序编写学习笔记(一)

2004-12-28 19:12 开始一直在网上找资料,问问题:问:网站上常用的生成“验证码”程序是如何实现的? 用C能不能实现? 答一:需要解决两个问题: 1。、生成gif图片的cgi 2。随机数随...
  • hustxxb
  • hustxxb
  • 2004年12月30日 04:10
  • 1128

一个简单的基于epoll的web server

 一个简单的基于epoll的web server,性能还不错我根据一个epoll的模型改了一个http server出来。只有129行,还可以精简不少,呵呵。小测了一下,一秒钟处理了一万了请求。当然...
  • xiaonamylove
  • xiaonamylove
  • 2009年03月17日 15:27
  • 3011

手工编写一个web应用程序

1.前提条件 1)必须安装好tomcat,并且测试成功 2)必须安装好JDK,并且配置好环境变量 2.手工编写WEB应用程序的步骤 1)首先在tomcat安装目录下面新建一个文件夹,我的安装目...
  • u012934325
  • u012934325
  • 2015年12月05日 10:43
  • 1225

优化的三叉哈夫曼树

1. 背景 在通讯、计算机网络、数据压缩、图像处理中,哈夫曼编码是一项极其重要的技术。哈夫曼编码是建立在二叉哈夫曼树的基础上,如果能够找到比二叉哈夫曼树更好的数据结构,那么对数据压缩等将起到促进作...
  • wbcg111
  • wbcg111
  • 2016年03月28日 16:08
  • 1860

编写简单的WEB服务器

一、背景     我们都知道使用浏览器访问网址的方法,将网址输入进地址框中就会显示出相应的文字、图片、视频等信息。实际上基于socket的客户/服务器原理是相似的,虽然可能承载信息的载体不同,但其背...
  • hty46565
  • hty46565
  • 2017年02月16日 09:46
  • 325

libSVM学习笔记

目录 一、         LibSVM文件结构说明... 2 二、         LibSVM安装及测试... 2 1.下载libsvm... 2 2.解压至指定目录... 2 ...
  • yansmile1
  • yansmile1
  • 2015年12月07日 17:18
  • 545
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Web Server程序编写学习笔记(三)getpng.c
举报原因:
原因补充:

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