您的位置:首页 > 其它

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: