作者:朱金灿
来源:http://blog.csdn.net/clever101
在一次偶然的机会中得知tiff图像时可以存诸颜色表的,心想以后用GeoTiff来保存图像分类图像就十分方便了。于是研究了如何创建带有颜色表的tif图像,写了一段代码。
代码如下:
#include "geotiffio.h"
#include "xtiffio.h"
#include <stdlib.h>
void CreateTif()
{
char *fname = "D:\\newgeo.tif";
TIFF *tif=(TIFF*)0; /* TIFF-level descriptor */
GTIF *gtif=(GTIF*)0; /* GeoKey-level descriptor */
// 创建tif图像
tif=XTIFFOpen(fname,"w");
if (!tif)
goto failure;
gtif = GTIFNew(tif);
if (!gtif)
{
printf("failed in GTIFNew\n");
goto failure;
}
//设置标签,表明这是索引图像
TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_PALETTE);
//创建颜色表
uint16 *r, *g, *b;
r = (uint16 *) _TIFFmalloc(sizeof(uint16) * 3 * 256);
g = r + 256;
b = g + 256;
for (int i = 255; i >= 0; i--)
{
b[i] = i;
g[i] = i;
r[i] = i;
}
//将颜色表写入到tif图像中
TIFFSetField(tif, TIFFTAG_COLORMAP, r, g, b);
_TIFFfree(r);
return;
failure:
printf("failure in makegeo\n");
if (tif) TIFFClose(tif);
if (gtif) GTIFFree(gtif);
return;
}
需要要到的第三方库是:geotiff库和libtiff库。
参考文献: