由于是新手,所以我只能有两个链接,不能发布我的图像。很抱歉给您带来麻烦!
我正在使用与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,然后退出循环。无论值如何,都只需读取所有像素即可。