由于是新的,我只能有两个链接,无法发布我的图片。很抱歉不得不复制+粘贴地址
我正在解析一个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压缩。
答案 0 :(得分:1)
首先,为什么要检查data[i]==NULL
?可能有0像素(黑色),所以保持全部。你基本上检查颜色是否为0然后退出循环。只要读取所有像素即可。