C语言乱谈(一) 20行代码生成BMP

在学习图形图像的过程中,最简单和常见的格式是BMP和PPM。下面将给出生成BMP的极度精简代码,然后讲解BMP格式。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #define w 200
 4 #define h 200
 5 void WriteBMP(char*img,const char* filename)
 6 {
 7     int l=(w*3+3)/4*4;
 8     int bmi[]= {l*h+54,0,54,40,w,h,1|3*8<<16,0,l*h,0,0,100,0};
 9     FILE *fp = fopen(filename,"wb");
10     fprintf(fp,"BM");
11     fwrite(&bmi,52,1,fp);
12     fwrite(img,1,l*h,fp);
13     fclose(fp);
14 }
15 int main()
16 {
17     char img[w*h*3];
18     for(int i=0; i<w*h*3; i++)img[i]=rand()%256;
19     WriteBMP(img,"test.bmp");
20     system("test.bmp");
21     return 0;
22 }

上述代码生成一幅宽和高均为200的BMP随机位图。如图所示:

BMP格式说明,待续。。。

时间: 2024-10-01 06:59:43

C语言乱谈(一) 20行代码生成BMP的相关文章

用20行Python代码生成鸡汤,打造AI咪蒙指日可待

先给大家分享点鸡汤: "Don't think of the overwhelming majority of the impossible." "不要去想不可能之事" "Grew up your bliss and the world." "努力赢得自己的幸福和世界" "what we would end create, creates the ground and you are the one to warm

[C++] 几行代码生成漂亮图片,数学家就是牛!

信息获得处:http://news.cnblogs.com/n/501488/ 分形:http://baike.baidu.com/subview/83243/11213590.htm?fr=aladdin 代码:[采用宏定义的来选择绘制不同的图,所以把最后两个给注释掉了,因为宏冲突,想自己试试可以单独编译运行] PS:生成的图片是ppm格式的要用格式工厂之类的软件进行转换,也可以自己在程序里直接把图片生成bmp或者其他格式的~ 1 // NOTE: compile with g++ filen

QString乱谈(2)

QString乱谈(2) 长期以来,很多人都清楚,一旦C++源码中直接使用了中文,这样的源码想要跨平台(I18N)会非常困难. 随着: Windows下:MSVC2010成为主流 Linux下:GCC升级到4.6 C++中的中文问题 才算有了一个比较优雅的.跨平台的Workaround. (本文讨论编译器范围:GCC4.6+, MSVC2010sp1+ .本文属于QString系列,但暂不涉及QString) C++ 中文问题 要在C++中正确使用中文,必须要了解下面两个概念: 源码字符集(th

大神手把手教你写一个页面模板引擎,只需20行Javascript代码!

只用20行Javascript代码就写出一个页面模板引擎的大神是AbsurdJS的作者,下面是他分享的全文,转需. 不知道你有木有听说过一个基于Javascript的Web页面预处理器,叫做AbsurdJS.我是它的作者,目前我还在不断地完善它.最初我只是打算写一个CSS的预处理器,不过后来扩展到了CSS和HTML,可以用来把Javascript代码转成CSS和HTML代码.当然,由于可以生成HTML代码,你也可以把它当成一个模板引擎,用于在标记语言中填充数据. 于是我又想着能不能写一些简单的代

20行js代码制作网页刮刮乐

分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码效果如下 盖伦.jpg 刮刮乐.gif HTML部分 <body> ![](img/gailun.jpg) <canvas id="canvas" width="400" height="300"></canvas> </body> 没什么要特别注意的为了效果加了些CSS样式 CSS部分 <style type=&qu

微软ASP.NET技术“乱谈”

微软ASP.NET技术“乱谈” 2014新年了,顺手写的一点文字,主要谈谈我对当前微软ASP.NET技术的看法,比较随意,大伙儿随便看看吧. 1 当前微软Web平台技术全貌 从2002年发布.NET 1.0和Visual Studio.NET,到2013年.NET 4.5.1和Visual Studio 2013发布时,微软.NET平台己有11年的历史,其Web技术几经变迁,当前演化为以下的主要技术子领域: 一张图了解微软Web平台技术全貌 时至今日, ASP.NET底层的基础架构基本没太大变化

1.5Java语言(JDK中的命令行工具)

1.3.4 配置环境变量path(1)  在dos命令行中敲入javac,出现错误提示.  错误原理:当前执行的程序在当前目录下如果不存在,windows系统会在系统中已有的一个名为path的环境变量指定的目录中查找.如果还没有找到,就出现以上的错误提示.  所以进入到jdk安装路径\bin目录下,执行javac.看到javac参数提示信息. 1.5Java语言(JDK中的命令行工具),布布扣,bubuko.com

一周乱谈(第八周) - 中文分词

中文分词 NLP(Natural language processing)自然语言处理一直都是比较热门的领域,现在不管是搜索,推荐神马的基本都需要和nlp打交道,而中文的nlp处理的第一步就是分词了,所以中文分词一直扮演者举足轻重的角色.当然了,分词的算法也是层出不穷,从最初的字典匹配到后来的统计模型,从HMM到CRF,分词精度都在不断提高,下面我就简单介绍下基本的分词算法. 字典匹配 最简单的分词就是基于字典匹配,一个句子“乱谈中文分词”,如果字典中我有这三个词“乱谈”“中文”“分词”那么我自

HTML5游戏实战(4): 20行代码实现FlappyBird

这个系列很久没有更新了.几个月前有位读者调侃说,能不能一行代码做一个游戏呢.呵呵,接下来一段时间,我天天都在想这个问题,怎么能让GameBuilder+CanTK进一步简化游戏的开发呢.经过几个月的努力,虽然还是做不到一行代码做一个游戏,但是GameBuilder的功能已经有了质的突破了.今天我们用FlappyBird为例介绍一下用GameBuilder +CanTK开发游戏的方法,整个游戏用了不到20行代码. CanTK(Canvas ToolKit)是一个开源的游戏引擎和APP框架,是开发H