windows读取bmp格式图像代码移植linux;windows代码移植linux,数据类型不匹配我问题;
来源:互联网 发布:泉州金蝶软件 编辑:程序博客网 时间:2024/06/02 14:53
以下面的代码是bmp在windows下的结构体定义:
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;
下面是在linux下的:
要包含#include<stdint.h>头文件
#pragma pack(8)typedef struct tagBITMAPFILEHEADER{ uint16_t bfType; //2 此处需留意 uint32_t bfSize; //4 /* File size in bytes */ uint16_t bfReserved1; //2 uint16_t bfReserved2; //2 uint32_t bfOffBits; //4 /* Offset to image data, bytes */ } __attribute__((packed))BITMAPFILEHEADER, *PBITMAPFILEHEADER; //Attention:"__"是两个"_"! 字边界对齐!4字节对齐 知道在linux的gcc下默认的是四字节的#pragma pack()#pragma pack(8)typedef struct tagBITMAPINFOHEADER{ uint32_t biSize; //4 /* Header size in bytes */ int32_t biWidth; //4 /* Width of image */ int32_t biHeight; //4 /* Height of image */ uint16_t biPlanes; //2 /* Number of colour planes */ uint16_t biBitCount; //2 /* Bits per pixel */ uint32_t biCompression; //4 /* Compression type */ uint32_t biSizeImage; //4 /* Image size in bytes */ int32_t biXPelsPerMeter; //4 int32_t biYPelsPerMeter; //4 /* Pixels per meter */ uint32_t biClrUsed; //4 /* Number of colours */ uint32_t biClrImportant; //4 /* Important colours */ } __attribute__((packed))BITMAPINFOHEADER,*PBITMAPINFOHEADER;#pragma pack()#pragma pack(4)typedef struct tagRGBQUAD { unsigned char rgbBlue; /* Blue value */ unsigned char rgbGreen; /* Green value */ unsigned char rgbRed; /* Red value */ unsigned char rgbReserved; /* Reserved */ } RGBQUAD;#pragma pack()
个人总结
1字节 uint8_t 2字节 uint16_t =unsigned short4字节 uint32_t =unsigned long8字节 uint64_t int32_t =long
0 0
- windows读取bmp格式图像代码移植linux;windows代码移植linux,数据类型不匹配我问题;
- windows到Linux代码移植
- linux代码移植到windows
- Socket 编程 windows到Linux代码移植遇到的问题
- 几个 Windows 到 Linux 的代码移植问题
- Socket 编程 windows到Linux代码移植遇到的问题
- Socket 编程 windows到Linux代码移植遇到的问题
- 几个 Windows 到 Linux 的代码移植问题
- 几个 Windows 到 Linux 的代码移植问题
- 几个 Windows 到 Linux 的代码移植问题
- Windows到Linux系统代码移植遇到的问题
- Linux C++代码移植到Windows要解决的问题
- 几个 Windows 到 Linux 的代码移植问题
- Socket 编程 windows到Linux代码移植遇到的问题
- Windows 到 Linux 代码移植的常见问题
- linux代码向windows移植花絮
- Linux到Windows下代码移植
- 将Linux代码移植到Windows的简单方法
- 女神教你字符串——导字符串(回文)
- 从control file 和 datafile header上获得不同的scn信息
- FZU 1889 水
- Centos 6.6(X64位)系统编译安装memcached 并安装PHP的memcache扩展
- 2013年蓝桥杯决赛试题
- windows读取bmp格式图像代码移植linux;windows代码移植linux,数据类型不匹配我问题;
- 《推荐系统实践》的笔记
- JM代码分析(二)
- 第九周 项目二
- Joseph(1443)
- html中表格table冻结行和列
- html css学习笔记-响应式布局的两种基本实现
- jq 积累
- L脚本语言的表对象