2012-10-18 2 views
0

У меня есть пирамидальный tiled-файл tiff, и я хочу извлечь плитки без декодирования и повторного кодирования jpeg, я видел, что с помощью TIFFReadRawTile() вы можете может извлечь необработанную плиту без декодирования, как я могу записать извлеченный буфер в читаемый файл jpeg?Использование libtiff's TIFFReadRawTile для получения jpeg-плитки без декомпрессии/сжатия

ответ

0

Я обнаружил, что на самом деле нет способа получить закодированную плитку без прямого возижения с huffmann-таблицами tiff, что довольно сложно.

Единственный способ, который я нашел, это прочитать декодированную плитку, а затем сделать магию с помощью 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 не может быть успешно обработана утилитой. В основном, потому что там достаточно полуразрушенных TIFF.

+0

Позвольте мне проверить исходный код tiff2pdf, так как JPEG-in-TIFF всегда выполняется мной, используя команду vips2tiff, поэтому она всегда преобразуется в том же формате. На самом деле, я только что начал работать с TIFFReadEncodedTile() на образ vips, но я хочу, если возможно, пропустить часть декодирования/кодирования. – alex88

+0

К сожалению, я ничего не знаю о vips2tiff, поэтому не могу сказать, является ли это лучшей отправной точкой, чем TIFF2PDF. – Bobrovsky

+0

Не беспокойтесь об этом, это просто, что TIFFReadEncodedTile декодирует JPEG, версия RAW возвращает закодированный JPEG, но я думаю, вам нужно добавить некоторые метаданные jpeg – alex88

 Смежные вопросы

  • Нет связанных вопросов^_^