2011-07-04 10 views
0

新規のため、私は2つのリンクしか持たず、画像を投稿できません。Targaファイルを読む。ダークカラーが見つからない?

をコピー+ペーストアドレスすることの不便をおかけし申し訳ありませんが、私はsteinsoft.net/index.php?site=Programming/Code%20Snippetsで見られるものと類似したコードでタルガ(の.tga)の画像ファイルを解析しています/ 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の

のMicrosoft Visual C++ 2010 Professionalの

タルガが保存されます。

答えて

1

まず、なぜdata[i]==NULLがチェックされていますか? 0ピクセル(黒)である可能性がありますので、それらをすべて保持してください。基本的に色が0であるかどうかを確認してループを終了します。値に関係なくすべてのピクセルを読み取るだけです。

+0

ドワーフ!それは夜遅く、決して私の心を越えたことはありません。私は、クラッシュが配列のサイズを超えてアクセスすることを望んでいませんでした(それを行うより良い方法がありますが)。 – ssell

関連する問題