2012-10-18 148 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