Wczytywanie obrazu BMP.
Ostatnio zmodyfikowano 2014-01-06 17:04
Timir Temat założony przez niniejszego użytkownika |
Wczytywanie obrazu BMP. » 2014-01-06 12:36:23 Witam. Otóż muszę wczytać plik .bmp bez zapisywania całego obrazu w tablicy oraz wyzerować podane przez użytkownika natężenia kolorów zapisując wynik w nowym pliku. Problem mój niestety pojawia się już podczas wczytywania pikseli. Pierwsze kilkanaście bajtów wczytuje się bez problemu, lecz w pewnym momencie program "gubi się" nie pobierając nowych danych z pliku. #include <fstream> #include <iostream> #include <conio.h> using namespace std;
int main() { char name[ 10 ], name2[ 10 ]; unsigned char obraz[ 54 ], temp, bfType1, bfType2; short B, G, R; unsigned int k = 0, bfSize, bfOffBits, biWidth, biHeight; cout << "Z jakiego pliku mam wczytac dane?: "; cin >> name; cout << "\nDo jakiego pliku mam zapisac wynik programu?: "; cin >> name2; ifstream Input( name ); ofstream Output( name2 ); if( !Input ) { cout << "\n\nNie mozna wczytac pliku."; cin.ignore(); getchar(); return 1; } cout << "\nJakie natezenia kolorow mam wyzerowac?"; cin >> R >> G >> B; for( int i = 0; i < 54; i++ ) { Input >> obraz[ i ]; Output << obraz[ i ]; } bfSize = obraz[ 2 ] | obraz[ 3 ] << 8 | obraz[ 4 ] << 16 | obraz[ 5 ] << 24; bfOffBits = obraz[ 10 ] | obraz[ 11 ] << 8 | obraz[ 12 ] << 16 | obraz[ 13 ] << 24; biWidth = obraz[ 18 ] | obraz[ 19 ] << 8 | obraz[ 20 ] << 16 | obraz[ 21 ] << 24; biHeight = obraz[ 22 ] | obraz[ 23 ] << 8 | obraz[ 24 ] << 16 | obraz[ 25 ] << 24; while( k < biWidth * biHeight ) { char pixel[ 3 ]; Input.seekg( bfOffBits + k ); Input.read( pixel, 3 ); if(( int ) pixel[ 0 ] == B ) pixel[ 0 ] =( char ) 0; if(( int ) pixel[ 1 ] == G ) pixel[ 1 ] =( char ) 0; if(( int ) pixel[ 2 ] == R ) pixel[ 2 ] =( char ) 0; Output << pixel[ 0 ] << pixel[ 1 ] << pixel[ 2 ]; k += 3; } while( !Input.eof() ) { Input.seekg( k ); Input >> temp; Output << temp; k++; } Input.close(); Output.close(); cout << "Program konczy dzialanie. "; cin.ignore(); getchar(); return 0; }
A tutaj adres do przykładowego zdjęcia: http://ifotos.pl/zobacz/picbmp_eprhphh.bmp/ Z góry dziękuję za każdą pomoc. |
|
pekfos |
» 2014-01-06 17:04:04 Odczytuj i zapisuj dane binarnie. |
|
« 1 » |