bmp图片数据提取
2014-07-25 20:57
253 查看
仿照别人的程序写的bmp数据提取C代码,并将提取的数据放到txt文档中
/* date : 2014/06/24 designer :pengxiaoen version : dev4.9.9.0 function :读取bmp图片的图片数据信息到文件txt中。参考了其他的程序 bmp 文件格式: 第10个字节处存放图像数据起始地址 —— 此程序中25行用到 第36h - 0436h 字节处存放调色板 —— 此程序中没有用到 ***************************************************************************************** 检测数据读取:第37行替换第35行,并且屏蔽掉42行-73行 bmp_data 修改成int 发现37行打印出来的数据为1a111111.使用存储格式看.bmp的时候发现对 应的位置数据为1111111a。 因为原始程序中使用的 bmp_data 是char 型,也就是读取数据的时候是一个像素点一个 像素点的读,所以就避免了倒序的情况发生 ******************************************************************************************* */ #include "stdio.h" #include "FileDefine.h" main() { unsigned char bmp_data [pic_size]; unsigned int i , pic_data_add ; //********************************************************** FILE *fp0 = fopen(pic_file ,"rb"); //开启图片 if(fp0==NULL) printf("open pic_file fault !!!! \n"); else { printf("open pic_file sucess! \n"); fseek(fp0,10L,0); // 找到图片数据存储位置地址 fread(&pic_data_add,4,1,fp0); printf("\nbmp_data_begin is %.4x \n",pic_data_add ); rewind(fp0); fseek(fp0,pic_data_add,0); // 指针指向图片数据存储位置 fread(bmp_data,pic_size,1,fp0); //将数据读取到数组中 //fread(bmp_data,4,1,fp0); printf("%x",bmp_data[0]) ; fclose(fp0); } //********************************************************** FILE *fp1 = fopen(pic_data ,"w"); // 打开文件为存储图片数据做准备 if(fp1==NULL) printf ("txt data file open fault !!!!!"); else { printf ("\ntxt data file open sucess !\n\n"); for (i=0;i<pic_size;i++) { fprintf (fp1,"%.2x\n",bmp_data[i]); // 将数组中的数据放到txt文档中 } fclose(fp1); } //***************为了验证Verilog中读取的数据是否正确而额外加的代码*********************** FILE *fp2 = fopen("checkPic_data.txt" ,"w"); // 打开文件为存储图片数据做准备 if(fp2==NULL) printf ("checkPic_data.txt data file open fault !!!!!"); else { printf ("\ncheckPic_data.txt data file open sucess !\n\n"); for (i=0;i<pic_size;i++) { if(!(i%1024)) fprintf (fp2,"\n\n\n%.2x",bmp_data[i]); else if(!(i%8)) fprintf (fp2,"\n%.2x",bmp_data[i]); else fprintf (fp2,"%.2x",bmp_data[i]); // 将数组中的数据放到checkPic_data文档中 } fclose(fp2); } system ("pause"); }
#define pic_file "flower.bmp" #define pic_data "pic_data.txt" #define bmp_file_rslt "sobel_rslt1.bmp" #define original_pic_height 768 #define original_pic_width 1024 #ifdef original_pic_width%4=0 #define pic_width original_pic_width #else #define pic_width (original_pic_width + 4 - original_pic_width%4 ) #endif #define pic_size (pic_width * original_pic_height)
相关文章推荐
- 如何在JPG或BMP图片上显示输入的订单数据内容,并在报表打印时显示出来,后台数据库是SQL SERVER 2000 ,先谢了.高分!
- 提取QQ2009表情数据文件中的图片
- bmp图片转换成16进制数据
- 保存客户区数据成BMP图片
- 24/16/8位bmp图片文件头、信息头的二进制数据
- 24/16/8位bmp图片文件头、信息头的二进制数据
- 利用COM组件IPicture读取jpg、gif、bmp图片文件数据和显示图片的两个函数
- WinCE显示资源中BMP图片的几种方法附自己个人实验数据
- c语言读取BMP图片的RGB数据
- VC6.0中使用Stream Object读取数据中流文件并显示Bmp,JPG等图片
- 24位RGB数据保存为BMP图片
- VC6.0中使用Stream Object读取数据中流文件并显示Bmp,JPG等图片
- ffmpeg Windows下采集摄像头一帧数据,并保存为bmp图片
- VC6.0中使用Stream Object读取数据中流文件并显示Bmp,JPG等图片
- 从bmp图片中读取数据
- 利用COM组件IPicture读取jpg、gif、bmp图片文件数据和显示图片的两个函数
- 24/16/8位bmp图片文件头、信息头的二进制数据
- bmp图片数据送往SQL SERVER
- GdPicture.NET图形处理教程连载:快速提取图片中的XMP元数据
- 关于BMP图片的一点理解,读取图象数据到数组