如何将位图格式图片文件(.bmp)生成geotiff格式图片?

本文详细解析了BMP文件的结构,并介绍了如何将BMP图像转换为GeoTIFF格式,包括位图格式信息的解析、TIFF与GeoTIFF格式的介绍,以及转换所需的环境部署和代码实现。
摘要由CSDN通过智能技术生成

一.位图格式信息

位图BITMAPINFOHEADER 与BITMAPFILEHEADER:

先来看BITMAPINFOHEADER,只写几个主要的

    biSize包含的是这个结构体的大小(包括颜色表)

    biWidth和biHeight分别是图片的长宽

    biPlanes是目标绘图设备包含的层数,必须设置为1

    biBitCount是图像的位数,例如24位,8位等

    biXPelsPerMeter, biYPelsPerMeter 是现实世界中每米包含的像素数 设为3780即可

    biSizeImage 图像数据的大小 = biWidth X biHeight X biBitCount

    ---------------------------------------------------------------------------------

    再看 BITMAPFILEHEADER

    bfType  图片的类型 必须是BM 填0x4d42即十进制的19778

    bfOffBits 从文件头开始到颜色数据的偏移量  54+sizeof(RGBQUAD)*256

    bfSize  图片的大小,bfOffBits + 长 X 宽 X 位数  例如对于128X128X24位的图像  bfSize=128X128X24 + 54+sizeof(RGBQUAD)*256

    bfReserved1和bfReserved1必须为0

BMP文件结构及其存取

数字图像在外存储器设备中的存储形式是图像文件,图像必须按照某个已知的、公认的数据存储顺序和结构进行存储,才能使不同的程序对图像文件顺利进行打开或存盘操作,实现数据共享。图像数据在文件中的存储顺序和结构称为图像文件格式。目前广为流传的图像文件格式有许多种,常见的格式包括BMP、 GIF、JPEG、TIFF、PSD、DICOM、MPEG等。在各种图像文件格式中,一部分是由某个软硬件厂商提出并被广泛接受和采用的格式,例如 BMP、GIF和PSD格式;另一部分是由各种国际标准组织提出的格式,例如JPEG、TIFF和DICOM,其中JPEG是国际静止图像压缩标准组织提出的格式,TIFF是由部分厂商组织提出的格式,DICOM是医学图像国际标准组织提出的医学图像专用格式。

BMP文件是Windows操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,所以称为位图(bitmap)文件,因其文件扩展名为BMP,故称为BMP文件格式,简称BMP文件。本书对图像的算法编程都是针对BMP图像文件的,因此在本章中我们详细介绍BMP文件结构及其读写操作,以加深对图像数据的理解。

BMP文件总体上由4部分组成,分别是位图文件头、位图信息头、调色板和图像数据,如表5-1所示。

表5-1 BMP文件的组成结构

位图文件头(bitmap-file header)

位图信息头(bitmap-information header)

彩色表/调色板(color table)

位图数据(bitmap-data)

下面来详细看一下每个组成部分的细节。

1.位图文件头(bitmap-file header)

位图文件头(bitmap-file header)包含了图像类型、图像大小、图像数据存放地址和两个保留未使用的字段。

打开WINGDI.h文件,搜索"BITMAPFILEHEADER"就可以定位到BMP文件的位图文件头的数据结构定义。

typedef struct tagBITMAPFILEHEADER {
WORD    bfType;
DWORD   bfSize;
WORD    bfReserved1;
WORD    bfReserved2;
DWORD   bfOffBits;
} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;

表5-2列出了tagBITMAPFILEHEADER中各字段的含义。

表5-2 tagBITMAPFILEHEADER结构

字 段 名

大小(单位:字节)

描 述

bfType

2

位图类别,根据不同的操作

系统而不同,在Windows

中,此字段的值总为‘BM’

bfSize

4

BMP图像文件的大小

bfReserved1

2

总为0

bfReserved2

2

总为0

bfOffBits

4

BMP图像数据的地址

2.位图信息头(bitmap-information header)

位图信息头(bitmap-information header)包含了位图信息头的大小、图像的宽高、图像的色深、压缩说明图像数据的大小和其他一些参数。

打开WINGDI.h文件,搜索"tagBITMAPINFOHEADER"就可以定位到BMP文件的位图信息头的数据结构定义。

typedef struct tagBITMAPINFOHEADER{
DWORD      biSize;
LONG        biWidth;
LONG        biHeight;
WORD       biPlanes;
WORD       biBitCount;
DWORD      biCompression;
DWORD      biSizeImage;
LONG        biXPelsPerMeter;
LONG        biYPelsPerMeter;
DWORD      biClrUsed;
DWORD      biClrImportant;
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;

表5-3列出了tagBITMAPFILEHEADER中各字段的含义。

表5-3 tagBITMAPFILEHEADER结构

字 段 名

大小

(单位:

字节)

描 述

biSize

4

本结构的大小,根据不同的操作系统而不同,在Windows中,此字段的值总为28h字节=40字节

biWidth

4

BMP图像的宽度,单位像素

biHeight

4

总为0

biPlanes

2

总为0

biBitCount

2

BMP图像的色深,即一个像素用多少位表示,常见有1、4、8、16、24和32,分别对应单色、16色、256色、16位高彩色、24位真彩色和32位增强型真彩色

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值