gpt4 book ai didi

c++ - 是否可以通过每次仅在内存中保存一个图 block 来处理完整的图 block tiff 图像?

转载 作者:行者123 更新时间:2023-11-30 18:11:01 24 4
gpt4 key购买 nike

我有一个简单的问题。我处理巨大的 tiff 图像(>4GB),当将它们全部加载到内存中时,我会填满 RAM,程序就会被终止。我尝试将它们保存为平铺 tiff,然后使用 libtiff 逐 block 加载它们,如下所示:

tdata_t buf = _TIFFmalloc(TIFFTileSize(tifSrc));
for(int i = 0;i< 20000;i+=128){
for(int j = 0;j< 20000;j+=128)
{
TIFFReadTile(tifSrc, buf , i, j, 0,0);
TIFFWriteTile(tifDst, (tdata_t)buf , i, j,0, 0);
}
}
_TIFFfree(buf);

但是,尽管我希望上述代码每次迭代仅在内存中加载一个图 block (128x128 字节),但整个图像都被存储了......有谁知道如何在内存中只加载一个图 block ?

最佳答案

要回答我自己的问题,您必须首先指定标签 TIFFTAG_TILEWIDTH 和 TIFFTAG_TILELENGTH,如下所示:

TIFFSetField(tiff, TIFFTAG_TILEWIDTH, (uint32)128);
TIFFSetField(tiff, TIFFTAG_TILELENGTH, (uint32)128);

然后读写函数成功并返回“0”,并且只有 128x128 的图 block 被加载到内存中!

关于c++ - 是否可以通过每次仅在内存中保存一个图 block 来处理完整的图 block tiff 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720696/

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