2012-10-18 149 views

回答

0

我发现实际上没有办法直接搞乱tiff的huffmann表,这很棘手。

我发现的唯一方法是读取已解码的图块,然后用vips直接输出到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在一些标题后输出图像。

0

你正在做的任务不是一件小事。你可能想仔细看看tiff2pdf工具的源代码。该实用程序可以完成您所需的任务,并且可以从中提取相关的部分。

问题是,该实用程序会做很多其他事情,你将不得不放弃。此外,该实用程序不能成功处理任何JPEG-in-TIFF。基本上,因为有足够的半破TIFFs在那里。

+0

让我检查一下tiff2pdf的源代码,顺便说一句,JPEG-in-TIFF总是由我使用vips2tiff命令制作的,所以它总是以相同的格式转换。其实我只是把它与TIFFReadEncodedTile()一起工作到一个vips图像,但我希望如果可能跳过解码/编码部分 – alex88

+0

不幸的是,我对vips2tiff一无所知,所以我不能说这是一个比起始点好的起点tiff2pdf。 – Bobrovsky

+0

不要担心,只是TIFFReadEncodedTile解码JPEG,RAW版本会返回编码的JPEG,但我认为您需要添加一些jpeg元数据 – alex88