2011-07-04 25 views
0

由於是新的,我只能有兩個鏈接,不能發佈我的圖片。對不起,我不得不貼+複製地址的不便閱讀Targa文件。缺少深色?

我解析與類似代碼的Targa(.TGA)圖像文件在steinsoft.net/index.php?site=Programming/Code%20Snippets發現/ Cpp/no8

將數據檢索到unsigned char數組後,我將其打印到日誌中以手動檢查。看起來不論什麼原因,較暗的顏色都不會被解析。


的簡單的打印代碼

file.open(save); 

//using while(tga.data[ i ] != NULL) resulted in ~400,000 lines of garbage being appended 
for(unsigned i = 1; i <= (tga.width * tga.height * tga.byteCount); i++) 
{ 
    if(tga.data[ i ] == NULL) 
     break; 

    file << (int)tga.data[ i ] << ","; 

    if((i % 3) == 0) 
     file << "\n"; 
} 

file.close(); 

黑暗:http://i.stack.imgur.com/qefIA.pnghttp://pastebin.com/8JeJwP2w

光:http://i.stack.imgur.com/XNTIK.pnghttp://pastebin.com/s2sW0XfM

正如你所看到的,當它是一個深色的,不包含在圖像的頂部行(在這個例子中是黑色的),但是它在光的時候就在那裏(粉色[255,53,204])。

有沒有人有關於這可能發生的原因的任何信息? 24位未壓縮


規格

的Windows Vista

微軟的Visual C++ 2010專業

的Targa保存。

回答

1

首先,你爲什麼要檢查data[i]==NULL?有可能是0像素(黑色),所以保持全部進入。基本上檢查顏色是否爲0,然後退出循環。只需讀取所有像素,無論數值如何。

+0

d'oh!這是深夜,甚至從未想過。我只是不想崩潰超出數組的大小訪問(雖然有更好的方法來做到這一點)。 – ssell