如何使用C代码生成图像

如何使用C代码生成图像,c,bmp,C,Bmp,然而,下面的函数在调用时只提供html void generateHTML (int socket) { char* message; // Sends HTTP response header message = "HTTP/1.0 200 OK\r\n" "Content-Type: text/html\r\n" "\r\n"; printf ("about to send=> %s\n", m

然而,下面的函数在调用时只提供html

void generateHTML (int socket) {
   char* message;

   // Sends HTTP response header

   message = "HTTP/1.0 200 OK\r\n"
                "Content-Type: text/html\r\n"
                "\r\n";
   printf ("about to send=> %s\n", message);
   write (socket, message, strlen (message));

   message = "<HTML><BODY><P>Hello World.</P></BODY></HTML>\n";
   printf ("about to send=> %s\n", message);
   write (socket, message, strlen (message));   
}
引用Dan的回答,十六进制的数据如下:

0000000: 424d 3a00 0000 0000 0000 3600 0000 2800  BM:.......6...(.
0000010: 0000 0100 0000 0100 0000 0100 1800 0000  ................
0000020: 0000 0400 0000 130b 0000 130b 0000 0000  ................
0000030: 0000 0000 0000 0000 0000                 ..........

但是,我无法将其放在引号内。我该怎么做?

这是1x1黑色windows bmp图像的xxd转储:

0000000: 424d 3a00 0000 0000 0000 3600 0000 2800  BM:.......6...(.
0000010: 0000 0100 0000 0100 0000 0100 1800 0000  ................
0000020: 0000 0400 0000 130b 0000 130b 0000 0000  ................
0000030: 0000 0000 0000 0000 0000                 ..........

这是1x1黑色windows bmp图像的xxd转储:

0000000: 424d 3a00 0000 0000 0000 3600 0000 2800  BM:.......6...(.
0000010: 0000 0100 0000 0100 0000 0100 1800 0000  ................
0000020: 0000 0400 0000 130b 0000 130b 0000 0000  ................
0000030: 0000 0000 0000 0000 0000                 ..........

扩展@dand.所说的内容,您可以在Linux(或者也可以是Windows)框上使用ImageMagick的“convert”命令将原始数据转换为图像。我使用.png进行了测试,您必须自己在Windows上测试输出:

jcomeau@intrepid:~$ echo -en "\0000" | convert -size 1x1 -depth 8 gray:- /tmp/1black.bmp jcomeau@intrepid:~$ xxd /tmp/1black.bmp 0000000: 424d 3a00 0000 0000 0000 3600 0000 2800 BM:.......6...(. 0000010: 0000 0100 0000 0100 0000 0100 1800 0000 ................ 0000020: 0000 0400 0000 120b 0000 120b 0000 0000 ................ 0000030: 0000 0000 0000 0000 0000 .......... jcomeau@intrepid:~$echo-en“\0000”| convert-size 1x1-depth 8灰色:-/tmp/1black.bmp jcomeau@intrepid:~$xxd/tmp/1black.bmp 0000000:424d 3100 0000 0000 3600 0000 2800 BM:…6…(。 0000010: 0000 0100 0000 0100 0000 0100 1800 0000 ................ 0000020:0000 0400 0000 120b 0000 120b 0000。。。。。。。。。。。。。。。。 0000030: 0000 0000 0000 0000 0000 ..........
扩展@Dan D.所说的内容,您可以在Linux(也可能是Windows)框上使用ImageMagick的“convert”命令将原始数据转换为图像。我使用.png进行了测试,您必须自己在Windows上测试输出:

jcomeau@intrepid:~$ echo -en "\0000" | convert -size 1x1 -depth 8 gray:- /tmp/1black.bmp jcomeau@intrepid:~$ xxd /tmp/1black.bmp 0000000: 424d 3a00 0000 0000 0000 3600 0000 2800 BM:.......6...(. 0000010: 0000 0100 0000 0100 0000 0100 1800 0000 ................ 0000020: 0000 0400 0000 120b 0000 120b 0000 0000 ................ 0000030: 0000 0000 0000 0000 0000 .......... jcomeau@intrepid:~$echo-en“\0000”| convert-size 1x1-depth 8灰色:-/tmp/1black.bmp jcomeau@intrepid:~$xxd/tmp/1black.bmp 0000000:424d 3100 0000 0000 3600 0000 2800 BM:…6…(。 0000010: 0000 0100 0000 0100 0000 0100 1800 0000 ................ 0000020:0000 0400 0000 120b 0000 120b 0000。。。。。。。。。。。。。。。。 0000030: 0000 0000 0000 0000 0000 ..........
要打印出来,需要创建一个数组 e、 g.无符号字符bmp[]={ 然后用上面的十六进制数填充这部分。但是,因为它是十六进制的,所以需要在每对数字的前面加上0x。 例如。 0x42,0x4d 等 这可以包含在{}括号中。 例如。
无符号字符bmp[]={
0x42、0x4d、0x。。。。
}
然后使用write函数通过套接字发送。
写入(socket、bmp、sizeof(bmp));

要打印出来,需要创建一个数组 e、 g.无符号字符bmp[]={ 然后用上面的十六进制数填充这部分。但是,因为它是十六进制的,所以需要在每对数字的前面加上0x。 例如。 0x42,0x4d 等 这可以包含在{}括号中。 例如。
无符号字符bmp[]={
0x42、0x4d、0x。。。。
}
然后使用write函数通过套接字发送。
写入(套接字、bmp、sizeof(bmp))

没那么简单,我读过维基的文章,但仍然有问题。只需要有人发布一个黑色bmp像素的示例。@meiryo:@jcomeau_ictx是对的。这不是小事。如果你没有时间或只是不想尝试理解格式规范,请尝试搜索一些有用的内容图书馆可以帮你完成这项工作。如果你能为我推荐一些教程,那就允许web服务器提供一个bmp文件,那太好了,谢谢。@meiryo:请随时告诉我们什么时候是家庭作业。顺便说一句,在这种情况下,你需要仔细阅读bmp规范并实现你需要的东西。这并不是那么简单e、 请看,我已经阅读了wiki文章,但我仍然有问题。只需要有人发布一个示例,说明单个黑色bmp像素的外观。@meiryo:@jcomeau_ictx是正确的。这不是小事。如果您没有时间或只是不想尝试理解格式规范,请尝试搜索一些可以执行我帮你做这项工作。如果你能给我推荐一些教程,那就让web服务器提供一个bmp文件,那太好了,谢谢。@meiryo:请尽量告诉我们什么时候是家庭作业。顺便说一句,在这种情况下,你需要仔细阅读bmp规范并实现你需要的。好的,42 4D是BM,告诉我们它是合法的imate bmp文件。我不太确定3A等等。对不起,如果我没有任何意义,现在有点紧张。丹,你比我先这么做,所以+1,但我直到我已经想出转换命令并转储了我的bmp文件后才看到你的答案。我能说什么,除了伟大的人都有同感:^)@jcomeau好的,为了更清楚地说明我的目标,我重写了这个问题。好的,424D是BM,告诉我它是一个合法的bmp文件。我不太确定3A等等。对不起,如果我没有任何意义,现在有点紧张。丹,你比我快了,所以+1,但我直到我弄清楚了co之后才看到你的答案nvert命令并转储了我的bmp文件。我能说些什么,除了有着相同想法的伟人:^)@jcomeau好的,为了更清楚地说明我的目标,我重写了这个问题。