Hello!
I need to invert a 24-bit bmp image from right to left, and from top to bottom. I know how to invert colours, but not the position. I only know fstream to open and close files. This is what I did (below). Please let me know where I am wrong, or maybe other easiter things than fstream that i can use? Really appreciate any help!!!

void ReverseBMP::reverseBitmap()
{
string originalBMP;
string reversedBMP;
cout<<"Please specify the name of original file. Include extension .bmp "<<endl;
cin>>originalBMP;
cout<<"Please specify the name of reversed file. Include extension .bmp "<<endl;
cin>>reversedBMP;

ifstream original_file;
original_file.open(originalBMP.c_str(), ios::in|ios::binary);

ofstream reversed_file(reversedBMP.c_str(), ios::binary|ios::out);

char c;

//finding the size of the existing bitmap file
original_file.seekg(0,ios::end);
long size_of_original = original_file.tellg();

//putting cursor back to beginning in original file
original_file.seekg(0,ifstream::beg);

int count=0;
int cursor_position = 0;
reversed_file.seekp(0, ofstream::beg);

while(!original_file.eof())
{                    
             original_file.read(&c, sizeof(char));

             // Reading header of the original file - the first 54 characters starting at 0
              if(count < 54)
              {
               reversed_file.put(c); 
               count++;
              }


              else
              { 
                  reversed_file.seekp(cursor_position, ios::end);
                  reversed_file.put(c);
                  reversed_file.put(c);
                  reversed_file.put(c);
                  cursor_position++;  
                  count++;
              }   


}

       original_file.close();
       reversed_file.close();

}

Recommended Answers

All 2 Replies

Member Avatar for iamthwee

Can't you use a bmp library.

oh, thanks, i didn't know there's a bmp library... i'll do someresearch then!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.