I'm trying to read and re-write a PGM image, though it's resulting in disoriented shape. The right image is the original one, the left is the re-created one:
This is the code I'm using:
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
int row = 0, col = 0, num_of_rows = 0, max_val = 0;
stringstream data;
ifstream image ( "3.pgm" );
string inputLine = "";
getline ( image, inputLine ); // read the first line : P5
data << image.rdbuf();
data >> row >> col >> max_val;
cout << row << " " << col << " " << max_val << endl;
static float array[11000][5000] = {};
unsigned char pixel ;
for ( int i = 0; i < row; i++ )
{
for ( int j = 0; j < col; j++ )
{
data >> pixel;
array[j][i] = pixel;
}
}
ofstream newfile ( "z.pgm" );
newfile << "P5 " << endl << row << " " << col << " " << endl << max_val << endl;
for ( int i = 0; i < row; i++ )
{
for ( int j = 0; j < col; j++ )
{
pixel = array[j][i];
newfile << pixel;
}
}
image.close();
newfile.close();
}
what am I doing wrong?