2011-02-04 4 views
0

메서드를 사용하여 약 500x500 32 비트 픽셀의 한 스트립으로 구성된 tiff 파일을 읽으려고 libtiff를 얻으려고합니다. TIFFReadScanline (tif, buf, row). 이 날 날 tdata_t (??) 행을 제공합니다.Libtiff : 픽셀 값을 얻는 방법 또는 TIFF 파일을 텍스트 파일로 변환하는 방법

이 버퍼를 텍스트 파일이나 액세스 픽셀 값 (두 배로해야 함)으로 어떻게 쓸 수 있습니까? 나는 텍스트 파일로 전체 버퍼를 쓰는 작성하려고 마지막 줄에서

TIFF* tif = TIFFOpen(c_str2, "r"); 
uint32 imagelength; 
tdata_t buf; 
uint32 row; 

TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength); 
buf = _TIFFmalloc(TIFFScanlineSize(tif)); 

for (row = 0; row < imagelength; row++){ 
     TIFFReadScanline(tif, buf, row); 
     myfile << buf << endl; 
} 

을하지만 이중 값하지만 진수 - 값이 없습니다 :

내 코드는 다음과 같습니다. tdata_t 버퍼를 char 버퍼로 대체 할 때 ASCII 심볼 횡설수설이 있습니다. 나는 tdata_t 버퍼를 double 또는 char 버퍼로 변환해야한다고 생각하지만 어떻게해야합니까?

libtiff가 자동으로 이것을 처리하므로 바이트 순서가되어서는 안됩니다.

모든 의견 환영합니다! 도움 주셔서 감사합니다. 즐거운 주말 보내십시오.

답변

1

< < 당신은 int 일 가능성이 높은 tdata_t 유형을 출력하고 쉽게 읽을 수 있도록 16 진수로 변환합니다.

저스트 (BUF)에 연속하는 모든 요소를 ​​루프로서 출력 < < (플로트) BUF [요소]를 힌트

+0

덕분 수레! 이제 저는 버퍼를 플로트 버퍼로 직접 초기화했습니다. – Michael

+0

Tiff 라이브러리는 데이터를 메모리 블록에 덤프하는 것으로 추측하고 있습니다. 유형을 신경 쓰는 것은 출력 루틴 일뿐입니다. –

관련 문제