2012-10-18 2 views

답변

0

나는 실제로는 매우 까다로운 tiff의 허프만 테이블을 엉망으로 만들지 않고도 인코딩 된 타일을 얻을 수있는 방법이 없다는 것을 발견했습니다.

내가 찾은 유일한 방법은 디코딩 된 타일을 읽은 다음 jpeg로 직접 출력하기 위해 vips로 마술을하는 것입니다.

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

관련 문제