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. STL之set

    set都快不会用了...整理下... 应该注意的是set中的值是不能相同的...和map一样... 原文链接:http://blog.csdn.net/wangran51/article/detail ...

  2. Google Developing for Android 一 - 相关上下文介绍

    前几天在G+上看到Google Developers站点,有一个Android系列的文章,分享到个人微博,周末闲来没事就学写了下,把它们简单的翻译了下,没想到一发不可收拾,六篇文章全部都翻译完了,有些 ...

  3. 【转】Linux查看内存大小和插槽

    原文https://wsgzao.github.io/post/linux-memory/ Linux 查看内存的插槽数,已经使用多少插槽,每条内存多大,已使用内存多大 dmidecode | gre ...

  4. UDP/TCP

    转载地址http://blog.csdn.net/wwmusic/article/details/8875748 Socket  是一套建立在TCP/IP协议上的接口不是一个协议 应用层:  HTTP ...

  5. 配置SSH框架的心得

    开发工具为myeclipse,开发工具自带struts2,hibernate,spring框架的导入.在新建的项目上右击Myeclipse->Project Facets->Install ...

  6. python subprocess阻塞

    import select import os import subprocess import time import fcntl args = ['python','./fetch_file2.p ...

  7. Entity Framework学习笔记——配置EF

    初次使用Entity Framework(以下简称EF),为了避免很快忘记,决定开日志记录学习过程和遇到的问题.因为项目比较小,只会用到EF的一些基本功能,因此先在此处制定一个学习目标:1. 配置EF ...

  8. closest应用(向上查找最近的资料)

    //新增网址信息function AddSitInfo(a) {    var obj = $(a).closest("td[name='POIRestaurant_Reference_UR ...

  9. 关于C语言里指针的基本概念

    C是很强大的一门语言,然而C语言的强大并不是强大在他的语法和“.h”文件,而是指针.    对指针通用的认知都是:指针是指向内存地址的一个变量.对于这句话,我是这么理解的:核心有两点,第一个是“指向内 ...

  10. Hive集成HBase;安装pig

    Hive集成HBase 配置 将hive的lib/中的HBase.jar包用实际安装的Hbase的jar包替换掉 cd /opt/hive/lib/ ls hbase-0.94.2*  rm -rf ...