gpt4 book ai didi

c++ - 如何使用 LibTIFF 在多页上写入图 block

转载 作者:行者123 更新时间:2023-11-28 04:26:51 24 4
gpt4 key购买 nike

我正在尝试使用 LibTIFF 在多页 tiff(金字塔形 tiff)上编写图 block :

for(int pageNum=0; pageNum<pageCount; pageNum++)
{
// processing for getting tiles (decode and resize for each page)
////

TIFFSetField(tiff_out, TIFFTAG_SUBFILETYPE, FILETYPE_REDUCEDIMAGE);
TIFFSetField(tiff_out, TIFFTAG_PAGENUMBER, pageNum);
//TIFFSetField(tiff_out, TIFFTAG_IMAGEWIDTH, imageWidth); // <- cannot be done with en error message(cannot change the value while processing)
//TIFFSetField(tiff_out, TIFFTAG_IMAGELENGTH, imageHeight); // <- cannot be done with en error message(cannot change the value while processing)
TIFFWriteEncodedTile(tiff_out, tileNumberOnPage, buff, -1);
}

当我尝试只写单页时,我工作得很好。但是当尝试处理多页时,结果会显示重叠的图像。似乎所有页面都显示在第一页。

我使用 tiffinfo 命令检查了生成的 TIFF 文件。显示页码是最后一页,但只显示第一页的信息(即只显示一页)。

在多页、金字塔形 TIFF 上是否有其他设置可以写入图 block ?

(我还尝试将 FILETYPE_PAGE 设置为 TIFFTAG_SUBFILETYPE。)

最佳答案

创建mutliple pages (directories) in the TIFF file , 使用 TIFFWriteDirectory 函数。它将指定的标签和数据写入当前目录,并开始一个新目录。 TIFFClose 将标签和数据写入当前目录并关闭文件。

因此,要创建一个包含两个目录的文件,您首先要创建一个新文件,设置标签并写入图 block ,调用TIFFWriteDirectory,设置标签并写入图 block ,然后调用TIFFClose.

例如,您可以将代码修改为:

for(int pageNum=0; pageNum<pageCount; pageNum++)
{
// processing for getting tiles (decode and resize for each page)
if(pageNum>0) {
TIFFWriteDirectory(tiff_out);
}
TIFFSetField(tiff_out, TIFFTAG_SUBFILETYPE, FILETYPE_REDUCEDIMAGE);
TIFFSetField(tiff_out, TIFFTAG_IMAGEWIDTH, imageWidth);
TIFFSetField(tiff_out, TIFFTAG_IMAGELENGTH, imageHeight);
TIFFWriteEncodedTile(tiff_out, tileNumberOnPage, buff, -1);
}
TIFFClose(tiff_out);

关于c++ - 如何使用 LibTIFF 在多页上写入图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54075010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com