BMP图片的数据结构
来源:互联网 发布:图书数据哪里最多 编辑:程序博客网 时间:2024/04/29 19:08
拿个小本本记一下
#include"stdio.h"#include<windows.h>#include<string.h>//定义头文件 信息头 调色板的结构体struct BITMAPFILEHEADER{ byte bfType;/*文件类型*/ DWORD bfSize;/*文件大小,以字节为单位*/ byte bfReserved1; byte bfReserved2; DWORD bfOffBits;/*从此数据结构到数据字节间的偏移量*/};struct BITMAPINFOHEADER{ DWORD biSize;/*此数据结构所需字节数*/ LONG biWidth;/*图像宽度,以像素为单位*/ LONG biHeight;/*图像高度,以像素为单位*/ byte biPlanes; byte biBitCount;/*每像素位数,为1 4 8 24*/ DWORD biCompression;/*压缩类型 0为不压缩*/ DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant;/*重要色彩数,0表示都重要*/};struct RGB_QUAD{ byte rgbBlue;/*蓝色分量*/ byte rgbGreen;/*绿色分量*/ byte rgbRed;/*红色分量*/ byte rgbReversed;/*保留值*/};struct RGB_QUAD img[1000][1000];//假定像素为1000*1000int main(void){ BITMAPFILEHEADER fileHeader;//定义位图头文件 BITMAPINFOHEADER infoHeader;//定义位图信息头 printf("Please indicate the path and filename of the input image(For example:F:\\in.bmp): "); char str_in[100]; memset(str_in,'\0',sizeof(str_in)); scanf("%s",str_in); printf("Please indicate the path and filename of the output image(For example:F:\\out.bmp): "); char str_out[100]; memset(str_out,'0',sizeof(str_out)); scanf("%s",str_out); FILE *pfin=fopen(str_in,"rb");//输入文件指针 FILE *pfout=fopen(str_out,"wb");//输出文件指针 fread(&fileHeader,sizeof(BITMAPFILEHEADER),1,pfin);//文件流读入位图头文件 fread(&infoHeader,sizeof(BITMAPINFOHEADER),1,pfin);//文件流读入位图信息头 if(infoHeader.biBitCount==4)//如果是16位图 { int size=infoHeader.biWidth*infoHeader.biHeight; fread(img,sizeof(struct RGB_QUAD),size,pfin);//读入像素矩阵 int i,j; for(i=0; i<infoHeader.biHeight; i++)//灰度化处理 { for(j=0; j<infoHeader.biWidth; j++) { img[i][j].rgbBlue=img[i][j].rgbBlue<<3; img[i][j].rgbGreen=img[i][j].rgbGreen<<2; img[i][j].rgbRed=img[i][j].rgbRed<<3; img[i][j].rgbBlue=img[i][j].rgbGreen=img[i][j].rgbRed=img[i][j].rgbBlue*0.11+img[i][j].rgbGreen*0.59+img[i][j].rgbRed*0.30; } } fwrite(&fileHeader,sizeof(fileHeader),1,pfout);//写入头文件 fwrite(&infoHeader,sizeof(infoHeader),1,pfout);//写入信息头 fwrite(img,sizeof(struct RGB_QUAD),size,pfout);//写入像素矩阵 } else { printf("此图并非16位BMP图\n"); } fclose(pfin);//关闭指针 fclose(pfout); return 0;}
0 0
- BMP图片的数据结构
- BMP图片的格式
- BMP图片的格式
- BMP图片的显示,本文章侧重于图片的内部数据结构
- bmp 位图的数据结构分析
- png图片文件的数据结构以及转换为bmp位图的源代码
- 动态BMP图片的加载
- 读取bmp图片的一部分
- 处理bmp格式的图片
- BMP图片的文件结构
- 保存bmp图片的程序
- BMP格式图片的数据格式
- AVI 转BMP图片的C++源码.
- bmp图片在对话框的全屏显示
- 解析.bmp图片的存放结构
- 游戏中bmp图片文件的读取
- PHP读取BMP格式图片的函数
- BMP格式验证码图片的破解。
- 两种C 常见排序方法
- inline-block和block元素水平居中显示
- [Rosyln学习记录2]添加引用
- 51nod 1010 只包含因子2 3 5的数
- 嵌入式的认识
- BMP图片的数据结构
- 51nod 1011 最大公约数GCD
- SSH(Spring MVC + Spring + hibernate)中配置文件解析
- Android中的getDimension()
- mysql 5.6安装与配置
- 经典问题之最少交换次数
- Java Reintroduction for Concepts
- Leetcode-160. Intersection of Two Linked Lists
- 数学,容斥原理(拉拉队,uva 11806)