标签图像文件格式(Tag Image File Format,简写为 TIFF,或者 TIF)是一种灵活的位图
格式,主要用来存储包括照片和艺术图在内的图像。
由于 TIF 支持扩展的任意格式数据存储,所以要自己去按它的格式去读取数据是非常
繁杂的事情,而且至今也没有一种库可以支持所有的格式。C++相关支持 f 格式文件的库
很多。
这里尝试了常用的几种:
1. QT 方式:
QImage TestImage; //定义
QRgb tempRgb;
QString tempPath =
“E:/TESTrgb/2se/dom_transparent_mosaic_group1.tif”;
TestImage. load(tempPath); //打开文件
tempRgb = TestImage.pixel(x , y);//取像素点(x,y)的颜色(真彩色图像)
...
2. Libf 库:
tstrip_t strip;
TIFF *tif_r;
tif_r =
TIFFOpen("E:/TESTrgb/2se/dom_transparent_mosaic_group1.tif",
"r");
3. GDAL 库:
size_t imgWidth, imgHeight, bandNum, depth;
const char *imgPath = "E:/TESTrgb/2se/clip0831/DOM_0.05m.tif";
GDALAllRegister(); //GDAL 所有操作都需要先注册格式
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO"); //支持中文路径
GDALDataset* img = (GDALDataset *)GDALOpen(imgPath, GA_ReadOnly);
总的来说,QT 读写是最直接的,它提供了 pixel 类可以直接取其中的某个像素点信息,
很方便直接。但是对于超大 f 数据,就不支持了,特别是 BIGTIFF 格式的文件完全不能读,
另外对于某些压缩模式的支持也不够。而 GDAL 库则能完美的读取现今绝大部分的 f 文件。
所以这里详细的介绍 GDAL 库进行 f 文件的操作:
另外注意:GDAL 库必须是 2.0 以上版本才支持 BIGTIFF 格式。
以下是关键代码的注释 ,不能直接编译:在我的资源中上传了对应的 GDAL 库和工程代码。
编译好的 GDAL 库: h"ps://download.csdn.net/download/u014518436/10724819
C++,QT 的工程代码:h"ps://download.csdn.net/download/u014518436/10724816
注意:库路径为绝对路径,需要自己改。
const char *imgPath = "E:/TESTrgb/2se/clip0831/DOM_0.05m.tif";
bool flagRed = false;
评论1