##

#include <stdio.h>
#include <stdlib.h>
#include <string.h> typedef unsigned char byte;
typedef unsigned short dbyte;
typedef unsigned long int dword;
typedef unsigned short word; /*******************************************
*定义bmp文件的头部数据结构
********************************************/
#pragma pack(push,2) //保持2字节对齐 struct tagBITMAPFILEHEADER {
//bmp file header
dbyte bfType; //文件类型
dword bfSize; //文件大小,字节为单位
word bfReserved1; //保留,必须为0
word bfReserved2; //保留,必须为0
dword bfOffBits; //从文件头开始的偏移量 //bmp info head
dword biSize; //该结构的大小
dword biWidth; //图像的宽度,以像素为单位
dword biHeight; //图像的高度,以像素为单位
word biPlanes; //为目标设备说明位面数,其值总是设为1
word biBitCount; //说明比特数/像素
dword biCompression; //图像数据压缩类型
dword biSizeImage; //图像大小,以字节为单位
dword biXPelsPerMeter; //水平分辨率,像素/米
dword biYPelsPerMeter; //垂直分辨率,同上
dword biClrUsed; //位图实际使用的彩色表中的颜色索引数
dword biClrImportant; //对图像显示有重要影响的颜色索引的数目 //bmp rgb quad
//对于16位,24位,32位的位图不需要色彩表
//unsigned char rgbBlue; //指定蓝色强度
//unsigned char rgbGreen; //指定绿色强度
//unsigned char rgbRed; //指定红色强度
//unsigned char rgbReserved; //保留,设置为0
}BMPFILEHEADER;
#pragma (pop) struct tagBITMAPFILEHEADER *bmp_p; //定义bmp文件头结构体指针
FILE *fd; //定义一个文件类型的指针 /*************************************************************
*初始化bmp文件头部,设置bmp图片
**************************************************************/ void Init_bmp_head(void)
{
bmp_p = &BMPFILEHEADER;
bmp_p-> bfType = 0x4D42; //文件类型
bmp_p-> bfSize = 0x25836; //文件大小,字节为单位
bmp_p-> bfReserved1 = 0x0; //保留,必须为0
bmp_p-> bfReserved2 = 0x0; //保留,必须为0
bmp_p-> bfOffBits = 0x36; //从文件头开始的偏移量 //bmp info head
bmp_p-> biSize = 0x28; //该结构的大小
bmp_p-> biWidth = ; //图像的宽度,以像素为单位
bmp_p-> biHeight = ; //图像的高度,以像素为单位
bmp_p-> biPlanes = 0x01; //为目标设备说明位面数,其值总是设为1
bmp_p-> biBitCount = ; //说明比特数/像素
bmp_p-> biCompression = ; //图像数据压缩类型
bmp_p-> biSizeImage = 0x25800;//0x09f8; //图像大小,以字节为单位
bmp_p-> biXPelsPerMeter = 0x60;//0x60; //水平分辨率,像素/米
bmp_p-> biYPelsPerMeter = 0x60; //垂直分辨率,同上
bmp_p-> biClrUsed = ; //位图实际使用的彩色表中的颜色索引数
bmp_p-> biClrImportant = ; //对图像显示有重要影响的颜色索引的数目 } int main(void)
{
static char *file_name =NULL; //保存文件名的指针
static long file_length = 0x25836; //文件的大小(整个文件)
unsigned char *file_p = NULL; //写入数据指针
unsigned char *file_p_tmp = NULL; //写入数据临时指针
unsigned char *byte_copy_p = NULL; //文件头部传递指针
unsigned char byte_copy = ; //文件头部数据拷贝变量
int i = ;
file_name = "test1.bmp";
Init_bmp_head();
file_p = (unsigned char *)malloc(sizeof(char)*); //申请一段内存
file_p_tmp = file_p;
for(i = ;i < ;i++ )
{
if(i% ==)
{
*file_p_tmp = 0x00; //图像前8位值
}
else
{
*file_p_tmp = 0xf0; //图像后8位值
}
file_p_tmp++;
}
byte_copy_p = (unsigned char *)bmp_p;
file_p_tmp = file_p;
for(i = ;i < ;i++)
{
*file_p_tmp = *byte_copy_p;
file_p_tmp++;
byte_copy_p++;
}
fd = fopen(file_name, "w");
fwrite(file_p, file_length, ,fd);
free(file_p); //释放申请的内存(重要)
fclose(fd);
printf("Done success!!!\n");
getchar();
return ();
}

C语言实现BMP图片生成的更多相关文章

  1. linu下C语言之BMP图片操作编程(上)

    BMP文件格式,也被称为位图图像文件或与设备无关的位图文件格式(DIB)或者只是一个位图,是 一个光栅图形 图像文件格式使用 来存储位图,数字,图片,独立的显示设备. 微软已经定义了一个特定的表示颜色 ...

  2. 【C】用C语言提取bmp图片像素,并进行K-means聚类分析——容易遇到的问题

    关于bmp图片的格式,网上有很多文章,具体可以参考百度百科,也有例子程序.这里只提要注意的问题. (1)结构体定义问题:首先按照百度百科介绍的定义了结构体,但是编译发现重定义BITMAPFILEHEA ...

  3. linu下C语言之BMP图片操作编程(下)

    前面提高了一个将BMP左转的程序,右转其实也是类似的操作,就不写了,这节,我们来实现,将一张BMP图进行灰度处理,代码贴上: #include <stdio.h> #include < ...

  4. linu下C语言之BMP图片操作编程(中)

    http://blog.csdn.net/morixinguan/article/details/50719472 关于BMP图的介绍之前已经说过了,最近要用到,又要重新开始学习. 现在实现一个让bm ...

  5. c语言数字图像处理(一):bmp图片格式及灰度图片转换

    本篇文章首先介绍了bmp图片格式,主要参考wiki上的内容,包括bmp文件的存储方式,对于一些常见的bmp文件格式都给了例子,并且对8位 16位RGB555 16位RGB565格式的bmp文件进行了简 ...

  6. 提取bmp图片的颜色信息,可直接framebuffer显示(c版本与python版本)

    稍微了解了下linux的framebuffer,这是一种很简单的显示接口,直接写入像素信息即可 配置好的内核,会有/dev/fbn 的接口,于是想能否提前生成一个文件,比如logo.fb,里面仅包含像 ...

  7. 简单bmp图片处理工具——python实现

    预备实现功能: 1.读取bmp文件 2.保存bmp文件 3.对bmp图片进行放大.缩小 4.对bmp图片进行灰度化 5.对bmp图片进行旋转 bmp文件格式非常简单,对于我这种初学者来说减少了不少不必 ...

  8. bmp图片的有关操作

    读取bmp图片 并生成新的bmp图片 #include "stdafx.h"#include <windows.h>#include <cmath>#inc ...

  9. mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换等

    mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上) MP3文件格式(二)---ID3v2 图:ID3V1标签结构 图:ID3V2标签 ...

随机推荐

  1. Struts框架之结果页面的跳转

    1. 结果页面存在两种方式 * 全局结果页面(有很多时候我们会跳转到同一页面,所以我们可以配置一个全局结果页面,不管什么情况都会跳转到这个页面) > 条件:如果<package>包中 ...

  2. jquery滚动事件

    滚动到一定高度: $(window).scroll(function(){ var scrollTop = $(document).scrollTop(); && scrollTop ...

  3. 有关Oracle统计信息的知识点[z]

    https://www.cnblogs.com/sunmengbbm/p/5775211.html 一.什么是统计信息 统计信息主要是描述数据库中表,索引的大小,规模,数据分布状况等的一类信息.例如, ...

  4. .net中几个经常用到的字符串的截取

    string str="123abc456";int i=3;1 取字符串的前i个字符   str=str.Substring(0,i); // or  str=str.Remov ...

  5. C# oracle 日期型字段,使用参数传值时,遇到ORA-01810: format code appears twice错误

    C#操作oracle数据库时,发现使用to_date('2014-01-03 18:00:00','yyyy-mm-dd hh:MM:ss')时,会出现ORA-01810: format code a ...

  6. CF Round #510 (Div. 2)

    前言:没想到那么快就打了第二场,题目难度比CF Round #509 (Div. 2)这场要难些,不过我依旧菜,这场更是被\(D\)题卡了,最后\(C\)题都来不及敲了..最后才\(A\)了\(3\) ...

  7. 需求文件requirements.txt的创建及使用

    pip freeze >requirements.txt pip install -r requirements.txt

  8. Linux产生序列数字

    {起始数字..结束数字}    //  注意 起始数字和结束数字都包括在内 中间没有空格

  9. [Groovy] 创建Excel,追加Excel

    package ScriptLibrary import java.awt.Color import java.awt.GraphicsConfiguration.DefaultBufferCapab ...

  10. 无法创建.gitignore文件,提示必须输入文件名称

    If you're using Windows it will not let you create a file without a filename in Windows Explorer. It ...