使用 libtiff 的 TIFFReadRawTile 无需解压缩/压缩即可获得 jpeg 磁贴

Using libtiff's TIFFReadRawTile to get a jpeg tile without decompression/compression

本文关键字:压缩 可获得 jpeg 磁贴 解压缩 libtiff TIFFReadRawTile 使用      更新时间:2023-10-16

我有一个金字塔瓷砖tiff文件,我想提取瓷砖而不解码和重新编码JPEG,我已经看到使用TiffreadRawtile()函数您可以提取RAW瓷砖而无需解码,如何将提取的缓冲区写入可读的JPEG文件?

您要执行的任务不是一个琐碎的任务。您可能需要仔细研究TIFF2PDF实用程序的源代码。该实用程序可以按照您的需求,您可能会从中提取相关零件。

问题是,公用事业公司还需要丢弃许多其他事情。同样,该公用事业公司无法成功处理任何JPEG-IN-TIFF。基本上,因为那里有足够的半折痕。

我发现实际上没有办法在不直接弄乱tiff的霍夫曼表的情况下获取编码的瓷砖,这很棘手。

我发现的唯一方法是阅读解码的瓷砖,然后用VIP进行一些魔术,直接输出jpeg。

tdata_t buf;
tsize_t len;
buf = _TIFFmalloc( TIFFTileSize( tif ) );
len = TIFFReadEncodedTile(tif, tile, buf, (tsize_t) -1);
VImage result ((void *) buf, 256, 256, 3, VImage::FMTUCHAR);
void *outBuffer;
unsigned long len;
vips_jpegsave_buffer(result, &outBuffer, &len, "Q", 90, NULL);

和使用COUT在某些标头后输出图像。