我正在嘗試讀取並重新寫入PGM圖像,但它會導致無法定向的形狀。右邊的圖像是原單,左邊是重新創建一個:寫入.PGM圖像會導致無法定向的形狀
這是代碼我使用:
#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();
}
我究竟做錯了什麼?
https://en.wikipedia.org/wiki/Netpbm_format#File_format_description –
@LightnessRacesinOrbit我已經按照格式建造,而我得到的結果就像你在左側看到圖像 – Ibrahim
在我看來,你指定的是二進制格式,但是解釋並給出ASCII格式的行和列信息 –