【发布时间】:2025-12-21 16:15:07
【问题描述】:
我尝试读取一个 ppm 文件并创建一个相同的新文件。但是当我用 GIMP2 打开它们时,图像就不一样了。
我的代码哪里出了问题?
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 文件,当我编写它时,我得到了相同的图像,但绿色比原始图片中的更强烈。然后我尝试了这个简单的阅读和写作,但我得到了相同的结果。
【问题讨论】:
-
您是否尝试过使用官方库来达到目的? -netpbm.sourceforge.net。仅供参考。