标准C读BMP图象的一个小代码

原创 2006年05月29日 17:31:00

#include <stdio.h>
#include <stdlib.h>

//#define BUFFSIZE 1024
#define  WIDTH    10


unsigned char head[1078];
unsigned char pix[WIDTH][WIDTH];
int       width=WIDTH; 
int       heigh;
void          pixread(FILE *fpin);
void       headread(FILE *fpin); 
void          newbmp();


int main()
{
 //int datanum;
 //int i;
 FILE *bmpfp=NULL;
 //int width=WIDTH;

 

///mnt/win1/mywork/picture-process/32
 if((bmpfp=fopen("10x10.bmp","rb"))==NULL){
   printf("Read the bmp file has failed/n");
   exit(1);
   }
                
                 headread(bmpfp);
      pixread(bmpfp);
                        newbmp();    
   
   fclose(bmpfp);
   return 0;
}

 

     
void  headread(FILE *fpin)                               //read the bmp file head 1078 byte
{
 int num1;
 
 
  num1=fread(head,sizeof(char),1078,fpin);
  printf("You have successfully read %d data from bmp file/n",num1);
}

 

void  pixread(FILE *fpin)                                   //read the bmp file pixels data 32*32 byte
{
 int num2 ;
 int i,j;
 int count;
 unsigned char  *pixbuff=NULL;

 heigh=10;
 width=32;
 fseek(fpin,1078,0);
 if((pixbuff=(unsigned char *)malloc(sizeof(char)*320))==NULL){
  printf("Data memory allocation fail!/n");
 }
 num2=fread(pixbuff,sizeof(char),1024,fpin);
        printf("You have successfully read %d data from the bmp file/n",num2);


        for(i=(heigh-1);i>=0;i--){
  count=width-1-i;
  for(j=0;j<width;j++){
    pix[i][j]=pixbuff[count*width+j];
    }
 }
  
 free(pixbuff);
 pixbuff=NULL;

 heigh=10;
 width=32;
 printf("The data are/n");
          for(i=0;i<heigh;i++){
    for(j=0;j<width;j++){
                     printf("%d ",pix[i][j]);
                    }
        printf("/n");
       }
 //BeginWaitCursor();
   printf("Read the data end/n");
}

 


void  newbmp()                                               //write the data that has some change to new bmp file

 int             i,j;
 int             num3;
 int             num4;
 int          count;
 //unsigned char pixbuff[1024];
        FILE            *newfp;
        unsigned char  *pixbuff=NULL;

 for(i=1;i<32;i++) {
  pix[16][i]=pix[15][i]=0;                                //make a small change about old bmp file
     
 }
 
 
 newfp=fopen("c:/new1.bmp","wb");///mnt/win1/mywork/picture-process/pgm/

        num3=fwrite(head,sizeof(char),1078,newfp);
 printf("You have successfully write %d data to new bmp file/n",num3);


 if((pixbuff=(unsigned char *)malloc(sizeof(char)*width*width))==NULL){
   printf(" Data memory allocation fail!/n");
 }
 
         width=32;                                                 //because the global var has changed

 for(i=(width-1);i>=0;i--){
  count=width-1-i;
  for(j=0;j<width;j++){
   pixbuff[count*width+j]=pix[i][j];
  }
 } 
 
 //for(i=1;i<1025;i++){                                  //display the data
 // printf("%d ",pixbuf[i]);
 // if(i%32==0){
 //      putchar('/n');
 // }
 //}  
 fseek(newfp,1078,0);
 num4=fwrite(pixbuff,sizeof(char),1024,newfp);     
        printf("You have successfully write %d data to new bmp file/n",num4);
 
 free(pixbuff);
 pixbuff=NULL;
}

//根据图象的bitcounts不同,数组定义也不同,如24位BMP图象,3字节表示一像素

VC++中bmp图象的显示

前段时间想用VC的对话框来动态地显示一副BMP位图,查了很多篇文章发现都写的很复杂(而且貌似许多都是复制粘贴而来),真正有价值的不多.其实VC显示BMP文件是很方便的,所有的代码加在一起也不过五六行而...

VC6怎样将bmp格式图象转换为jpg格式文件?

VC6怎样将bmp格式图象转换为jpg格式文件?   利用 IJG 的 jpeg 库。   关于如何使用 IJG jpeg 库,请参考前面的文章: VC6下编译IJG库(用于读取和生成jpg...

VC++中bmp图象的显示

前段时间想用VC的对话框来动态地显示一副BMP位图,查了很多篇文章发现都写的很复杂(而且貌似许多都是复制粘贴而来),真正有价值的不多.其实VC显示BMP文件是很方便的,所有的代码加在一起也不过五六行而...

BMP图象解析

BMP图象解析 作者:南京邮电大学 吴登荣 下载源代码 摘    要:对BMP图象格式进行解析,本工程在WinXP+VC6.0下编译运行成功。 关 键 字:BMP格式 正...

在Framebuffer下编程显示BMP图象 分享

http://yaos.blog.sohu.com/20240931.html今天看别人的代码,知道可以使控制台进入图形模式,这样SHELL程序的显示就不会影响BMP图像的显示了。于是,COPY过来,...
  • yuyin86
  • yuyin86
  • 2011年07月06日 11:16
  • 806

在Framebuffer下编程显示BMP图象

今天看别人的代码,知道可以使控制台进入图形模式,这样SHELL程序的显示就不会影响BMP图像的显示了。于是,COPY过来,放入自己先前的那个程序,再整个800x600的BMP图,试试全屏显示的效果!爽...

picture control中显示jpg,jif,bmp格式图象

char *lpImageFile; //图像文件名 HWND hWnd ; //要显视对象句柄 int nScrWidth ; //显示宽度 int nScrHeight ; //显示高度 ...

bmp/gif/jpg图象最底层原理分析

bmp/gif/jpg图象最底层原理分析(1)---- JPG  转载自:http://www.cnblogs.com/glaivelee/archive/2011/10/10/2205151....
  • hsg77
  • hsg77
  • 2015年09月17日 15:17
  • 999
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:标准C读BMP图象的一个小代码
举报原因:
原因补充:

(最多只允许输入30个字)