2

嘿,在阅读 C++ 中的 tiff 元数据时,我完全迷失了,我查看了谷歌并找不到任何示例。我要做的就是读取 rating 属性并将其输出到控制台,我应该能够从那里获取它。提前致谢。

更新谢谢大家,我会更多地研究 libtiff 库

查看 libtiff 文件夹,对于我想要完成的工作似乎有点矫枉过正。是否可以阅读设置库的文件的“属性/详细信息”选项卡,还是我在问一些非常迟钝的东西。同样,我要查找的只是他的文件是否有评级。

4

2 回答 2

4

好吧,libtiff 公开了所有这些功能,您只需要阅读文档即可。

要设置元数据,您有 TIFFSetField

int
TIFFSetField(TIFF* tif, ttag_t tag, ...)

同样,要检索元数据,您有TIFFGetField

int
TIFFGetField(TIFF* tif, ttag_t tag, ...)

这里要注意的一件事是,如果您正在阅读标准 TIFF 标签或专有标签。如果它们是专有的并且不在 libtiff 库中,那么有人自己添加了它们,在这种情况下,您需要将他们的标签声明合并到您的 libtiff 版本中(或者只是获取他们的)。如果涉及到,您可以按照本指南进行操作(我必须这样做)。

于 2012-05-08T00:02:44.780 回答
0

有 ImageMagick 可以处理 TIFF 图像:http ://www.imagemagick.org/script/formats.php 您可以使用它在下面使用libTiff的框架拉元数据,使用它您应该能够使用调用拉元数据标签喜欢TIFFGetFieldEd S. 建议

这是从 libTiff 页面中提取的示例用法:

TIFF* tif = TIFFOpen("myfile.tif", "r");
if (tif) {
uint32 imageWidth, imageLength;
uint32 tileWidth, tileLength;
uint32 x, y;
tdata_t buf;

TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &imageWidth);
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imageLength);
TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tileWidth);
TIFFGetField(tif, TIFFTAG_TILELENGTH, &tileLength);
buf = _TIFFmalloc(TIFFTileSize(tif));
for (y = 0; y < imageLength; y += tileLength)
    for (x = 0; x < imageWidth; x += tileWidth)
    TIFFReadTile(tif, buf, x, y, 0);
_TIFFfree(buf);
TIFFClose(tif);
}

还有一个由库处理的标签列表:http ://www.libtiff.org/support.html

于 2012-05-08T00:07:29.967 回答