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();
}