Чтение Тарга Файла.Отсутствуют темные цвета? - PullRequest
0 голосов
/ 04 июля 2011

Из-за того, что я новичок, я могу иметь только две ссылки и не могу публиковать свои изображения. Извините за неудобства, связанные с копированием + вставкой адресов

Я анализирую файл изображения Targa (.tga) с кодом, аналогичным найденному на steinsoft.net / index.php? Site = Программирование / Код% 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-битный, а НЕ сжатый.

1 Ответ

1 голос
/ 04 июля 2011

Прежде всего, почему вы проверяете, если data[i]==NULL?Там может быть 0 пикселей (черный), поэтому держите их все. Вы в основном проверяете, имеет ли цвет 0, и затем выходите из цикла.Просто прочитайте все пиксели независимо от значения.

...