linux下读取bmp

由于windows中所用头文件"windows.h"在linux下不可用,故自己建立相关的头文件,定义bmp文件的存储结构及格式

代码如下:

 

/* linux_bmp.h*/
/*
 * Copyright (c)2010 Chris Grant
 *
 * Win32 USER structures and API
 */
#include <iostream>
typedef   struct   tagBITMAPFILEHEADER{  
        unsigned   short   bfType;       //2  此处需留意
        unsigned   long    bfSize;         //4                              /*   File   size   in   bytes                     */  
        unsigned   short   bfReserved1;   //2
        unsigned   short   bfReserved2;   //2 
        unsigned   long    bfOffBits;      //4                                  /*   Offset   to   image   data,   bytes   */  
  } __attribute__((packed))BITMAPFILEHEADER,   *PBITMAPFILEHEADER;  //Attention:"__"是两个"_"!  字边界对齐!4字节对齐   知道在linux的gcc下默认的是四字节的
   
typedef   struct   tagBITMAPINFOHEADER{  
        unsigned   long    biSize;              //4                 /*   Header   size   in   bytes            */  
         long         biWidth;               //4              /*   Width   of   image                         */  
         long         biHeight;                  //4          /*   Height   of   image                       */  
        unsigned short   biPlanes;        //2        /*   Number   of   colour   planes       */  
        unsigned short   biBitCount;       //2     /*   Bits   per   pixel                         */  
        unsigned   long biCompression;       //4           /*   Compression   type                     */  
        unsigned   long biSizeImage;    //4                  /*   Image   size   in   bytes               */  
        long   biXPelsPerMeter;     //4
        long   biYPelsPerMeter;      //4  /*   Pixels   per   meter                     */  
        unsigned   long biClrUsed;       //4                   /*   Number   of   colours                   */  
        unsigned   long biClrImportant;       //4         /*   Important   colours                   */  
  } __attribute__((packed))BITMAPINFOHEADER,*PBITMAPINFOHEADER;  
   
typedef   struct   tagRGBQUAD   {  
 unsigned   char   rgbBlue;   /*   Blue   value     */  
 unsigned   char   rgbGreen;   /*   Green   value   */  
 unsigned   char   rgbRed;   /*   Red   value       */  
 unsigned   char   rgbReserved;   /*   Reserved         */  
  }   RGBQUAD;  
    

将其include即可。

 

参考:

1.上篇博客

2. http://m.cnblogs.com/51493/1385324.html

标题: 一个在LINUX下生成BMP的程序

很多人都搞不定内存对齐的问题,最近帮老焦他们写测试程序,用到一个BMP GENERATOR,写了个比较简单的版本,仅针对24位真彩,现把代码公布

#include <iostream>
using namespace std;
typedef long BOOL;
typedef long LONG;
typedef unsigned char BYTE;
typedef unsigned long DWORD;

 

......

......

......
 

 

 3. http://topic.csdn.net/t/20040921/04/3392666.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值