1.生成BMP图片

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

 #include <stdio.h>
#include <stdlib.h>
#define w 200
#define h 200
void WriteBMP(char*img,const char* filename)
{
int l=(w*+)/*;
int bmi[]= {l*h+,,,,w,h,|*<<,,l*h,,,,};
FILE *fp = fopen(filename,"wb");
fprintf(fp,"BM");
fwrite(&bmi,,,fp);
fwrite(img,,l*h,fp);
fclose(fp);
}
int main()
{
char img[w*h*];
for(int i=; i<w*h*; i++)img[i]=rand()%;
WriteBMP(img,"test.bmp");
system("test.bmp");
return ;
}

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

BMP格式说明,待续。。。

2.生成PNG图片

miloyip给出了生成无压缩PNG图片所需的最少的ANSI C 代码,详情见:https://github.com/miloyip/svpng

补充:LodePNG是一个集合了PNG图像解码器和编码器的代码文件,不依赖于诸如zlib和libpng的外部链接/库,提供方便友好的PNG编解码器调用方法。LodePNG主要是采用C(ISO C90)编写的,并提供了C++的接口。LodePNG的使用非常简单,只要在项目文件中包含lodepng.cpp和lodepng.h或者lodepng.c和lodepng.h就可以。

3.生成JPEG图片

SuperSodaSea给出了生成JPEG图片的C++代码,详情见:https://github.com/SuperSodaSea/svjpeg

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

  1. 优测优社区干货精选|老司机乱谈编辑器之神——vim

    文 / 腾讯 吴双 前言 优测小优 有话说: 腾讯优测只有应用测试大神?不不不,我们还有各种研发大牛! *** vim 是一种信仰,我自从2004年有了这个信仰,已经12个年头了.本文介绍了学习vim ...

  2. JS模版引擎[20行代码实现模版引擎读后感]

    曾经阅读过<只有20行JAVASCRIPT代码, 手把手教你写一个页面模版引擎>这篇文章, 对其中实现模版的想法实在膜拜, 于是有了这篇读后感, 谈谈自己对模版引擎的理解, 以及用自己的语 ...

  3. 只有20行Javascript代码!手把手教你写一个页面模板引擎

    http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...

  4. 20行Python代码开发植物识别 app

    这篇文章介绍如何用Python快速实现一个植物识别的app,家里养了几盆多肉还叫不上名字,正好拿来识别一下.实现这样一个app只需要20行左右的代码,先来看下效果: 另外,我也开发了微信小程序版本,大 ...

  5. JIT-动态编译与AOT-静态编译:java/ java/ JavaScript/Dart乱谈

    C 和 C++ 之类的编译语言性能远超Java,但是生成的代码只能在有限的几种系统上执行,这就有了Java的存在基础(JVM-跨平台) 早期 Java 运行时所提供的性能级别远低于 C 和 C++ 之 ...

  6. 微软ASP.NET技术“乱谈”

    微软ASP.NET技术“乱谈” 2014新年了,顺手写的一点文字,主要谈谈我对当前微软ASP.NET技术的看法,比较随意,大伙儿随便看看吧. 1 当前微软Web平台技术全貌 从2002年发布.NET ...

  7. C++矢量图形库系列(1)——矢量图形库乱谈(转)

    转自:http://blog.sina.com.cn/s/blog_4265e1760100lg03.html 本系列篇章的主要内容是讲解矢量图形库的编译.开发和使用.并不对他们周边的内容做过多的描述 ...

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

    这个系列很久没有更新了.几个月前有位读者调侃说,能不能一行代码做一个游戏呢.呵呵,接下来一段时间,我天天都在想这个问题,怎么能让GameBuilder+CanTK进一步简化游戏的开发呢.经过几个月的努 ...

  9. 20行JS代码实现贪吃蛇

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. JAVA基础知识:容器

    JDK所提供的容器都在java.util包里面,下面开始讨论的都是JDK1.4版本的,只讲述基本知识,不涉及泛型 容器API的类图结构如下图所示 Set:元素无顺序且不可重复      List:元素 ...

  2. 多个DLL合并成一个DLL

    多个DLL合并成一个DLL,把DLL合并到Exe中的解决方案 1:) 下载 http://download.microsoft.com/download/1/3/4/1347C99E-9DFB-425 ...

  3. Access denied for user 'root'@'localhost' (using password:YES)

    版权所有,未经博主允许不得转载. 今天发现服务器mysql连接不上,报 can't connect to mysql server on 'root'@'ip' (61) 照例ssh到服务器,发现my ...

  4. Hibernate配置文档详解

    Hibernate配置文档有框架总部署文档hibernate.cfg.xml 和映射类的配置文档 ***.hbm.xml hibernate.cfg.xml(文件位置直接放在src源文件夹即可) (在 ...

  5. border在IE6设置transparent无效

    在ie6下给border设置transparent是无效的,解决办法如下: _border-color:tomato; /*For IE6-*/ _filter:chroma(color=tomato ...

  6. Linux文件及目录权限解析

    Linux系统9位基础权限体系 文件权限   * r权限 可读          对文件具有读取及查看文件内容的全新啊   * w权限 可写        对文件具有新增.修改文件内容的权限     ...

  7. java面试题个人总结

    1.重载和重写的区别重写:发生在父子类中,方法名.参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类:如果父类方法访问修饰符为private则子类中就不是重写.2.j ...

  8. MATLAB取余求模

    (1)fix(x) : 截尾取整 >> fix( [3.12 -3.12]) ans =   3   -3 (2)floor(x): 不超过x 的最大整数.(高斯取整) >>  ...

  9. WLAN频段的选择

    WLAN(无线局域网)通过射频技术,将设备之间互联.当前应用于WLAN组网的有WIFI,蓝牙等.蓝牙工作在2.4GHZ的ISM(工业.科研.医疗)频段,功率等级分为0dBm,10dBm,20dBm:发 ...

  10. [HTML]安卓下<video>无法点击播放

    在<video>外面添加<div>并加上data-tap-disabled="true"属性即可