libTIFF 图像读取与保存

本文介绍了libTIFF库在图像读取与保存中的应用,包括头文件引用、文件读写模式、多目录文件处理、标签操作、RGBA图像的读取与存储,以及三种不同的图像I/O读写方法。libTIFF支持多图像存储在一个文件中,提供了丰富的标签信息读取与设置,适用于处理4通道图像数据。
摘要由CSDN通过智能技术生成


本系列文章由 @YhL_Leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/YhL_Leo/article/details/49848391


1 头文件

libtiff定义一系列C语言类型的数据结构,调用时包含的头文件为:

#include "tiffio.h"

2 文件读写

/* read from an existing TIFF image */
void main()
{
    TIFF* tif = TIFFOpen("foo.tif", "r");
    ... do stuff ...
    TIFFClose(tif);  // or TIFFFlush(tif);
}

/* create or overwrite a TIFF image */
void main()
{
    TIFF* tif = TIFFOpen("foo.tif", "w");
    ... do stuff ...
    TIFFClose(tif);  // or TIFFFlush(tif);
}

不同于stdio library对TIFF文件的操作可以同时支持读和写,libtiff对于TIFF文件的操作模式是不可变更的,也就是说对一个指定的TIFF文件,一次只能支持对文件的读或写中的一种操作。

3 多目录文件读写

TIFF格式支持将多个图像文件存储为一个文件的功能,每个图片都有一个对应的数据结构称为一个目录,其中包括全部的信息格式和图像数据内容。图像之间可以是相关的也可以使不相关的。

#include "tiffio.h"
int main(int argc, char* argv[])
{
    TIFF* tif = TIFFOpen(argv[1], "r");
    if (tif) 
    {
        int dircount = 0;
        do {
            dircount++;
        } while (TIFFReadDirectory(tif));

        printf("%d directories in %s\n", dircount, argv[1]);
        TIFFClose(tif);
    }
    return 0;
}

// write: TIFFWriteDirectory()

4 标签读取与设置

图像相关的信息例如宽、高、通道数、定向信息、颜色信息等。libtiff中提供了获取和设置标签值的函数:TIFFGetFieldTIFFSetField

/* read the tags */
uint32 width, height;
uint16 ncn;

TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &width);    // image width in pixels
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &height);  // image height in pixels
TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &ncn); // samples per pixel -> channels

cout << width << " " << height << " " << ncn << endl; 

/* set the tags */ 
TIFFSetField( imageWrite, TIFFTAG_IMAGEWIDTH, width );
TIFFSetField( imageWr
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值