阅读Targa文件。缺少深色?

时间:2011-07-04 05:49:27

标签: c++ visual-studio-2010 parsing graphics tga

由于是新的,我只能有两个链接,无法发布我的图片。很抱歉不得不复制+粘贴地址

我正在解析一个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.png http://pastebin.com/8JeJwP2w

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

正如您所看到的,图像顶部的线条在深色(本例中为黑色)时不包括在内,但是当它很浅时(粉红色[255,53,204])就会出现。

有没有人知道为什么会发生这种情况?


功能

Windows Vista

Microsoft Visual C ++ 2010 Professional

Targa保存为24位NOT压缩。

1 个答案:

答案 0 :(得分:1)

首先,为什么要检查data[i]==NULL?可能有0像素(黑色),所以保持全部。你基本上检查颜色是否为0然后退出循环。只要读取所有像素即可。