我嘗試讀取ppm文件並創建一個相同的新文件。但是當我用GIMP2打開它們時,圖像不一樣。如何讀寫ppm文件?
問題與我的代碼在哪裏?
int main()
{
FILE *in, *out;
in = fopen("parrots.ppm","r");
if(in == NULL)
{
std::cout<<"Error.\n";
return 0;
}
unsigned char *buffer = NULL;
long size = 0;
fseek(in, 0, 2);
size = ftell(in);
fseek(in, 0, 0);
buffer = new unsigned char[size];
if(buffer == NULL)
{
std::cout<<"Error\n";
return 0;
}
if(fread(buffer, size, 1, in) < 0)
{
std::cout<<"Error.\n";
return 0 ;
}
out = fopen("out.ppm","w");
if(in == NULL)
{
std::cout<<"Error.\n";
return 0;
}
if(fwrite(buffer, size, 1, out) < 0)
{
std::cout<<"Error.\n";
return 0;
}
delete[] buffer;
fcloseall();
return 0;
}
在此之前,我讀了結構的PPM文件,當我寫的,我得到了相同的圖像,但綠色是比原來的畫面更加激烈。然後我嘗試了這個簡單的閱讀和寫作,但是我得到了相同的結果。
您是否嘗試過使用官方庫來達到這個目的? - http://netpbm.sourceforge.net/。僅供參考。 – Dummy00001