2011-02-04 23 views
0

我試圖讓libtiff讀出包含一個大約500x500 32位像素的條帶的tiff文件,使用方法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; 
} 

在最後一行中我儘量寫全緩衝寫出到一個文本文件,但沒有雙值,但十六進制值。當我用char緩衝區替換tdata_t緩衝區時,會出現ASCII符號亂碼。我想我應該將tdata_t緩衝區轉換爲double或char緩衝區,但是如何?

它不應該是字節順序,因爲libtiff自動處理這個問題,我想。

歡迎任何建議!感謝您的幫助,祝您週末愉快!

回答

1

< <注意到您輸出的tdata_t類型可能是整數,並將它們放入十六進制以便於閱讀。

只要遍歷行中的所有元素(buf中)並將它們輸出作爲與< <(浮點)的buf [元件]

+0

感謝您的提示浮!現在我直接將緩衝區初始化爲浮點緩衝區,並且工作正常。 – Michael 2011-02-07 12:40:08

相關問題