由于是新手,所以我只能有两个链接,不能发布我的图像。很抱歉给您带来麻烦!

我正在使用与steinsoft.net/index.php?site=Programming/Code%20Snippets/Cpp/no8相似的代码来解析Targa(.tga)图像文件

将数据检索到无符号字符数组后,我将其打印到日志中以进行手动检查。似乎出于任何原因都无法解析深色。



简单打印代码

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专业版

Targa保存为24位未压缩。

最佳答案

首先,为什么要检查data[i]==NULL?可能有0像素(黑色),因此请将它们全部保留。基本上检查颜色是否为0,然后退出循环。无论值如何,都只需读取所有像素即可。

10-08 03:50