Я пытаюсь прочитать файл 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;
}
Перед тем, что я прочитал файл миллионной доли в структуре, и когда я это написал я получаю такое же изображение, но зеленый был более интенсивным, чем в оригинальной картине. Затем я пробовал это простое чтение и письмо, но получаю тот же результат.
Вы пытались использовать официальную библиотеку для этой цели? - http://netpbm.sourceforge.net/. FYI. – Dummy00001