1
Hi, I am saving a file in binary format and trying to open the same binary. However, I am not getting the expected result. They follow the writing and reading function. I’m saving a format image. ppm, but when I try to bring it back to ASCII file to read it as text I can only get the header of it; Moreover the image is only printed with the same code as the original, in cases I tested every x rows where rows is the number of columns, that is, in a 1024 x 768 image it prints the same as the original every 1024 pixels. Images of PPM format
//passa o arquivo para binario
arquivo = fopen("imagem.bin", "wb");
fwrite(&tipo, 1, sizeof (tipo), arquivo); //salva o tipo do arquivo
fwrite(&larg, 1, sizeof (int), arquivo); //salva a largura da imagem
fwrite(&alt, 1, sizeof (int), arquivo); // salva a altura do arquivo
fwrite(&max, 1, sizeof (int), arquivo); // salva o valor máximo para cor arquivo
for (i = 0; i < alt; i++){
for (j = 0; j < larg; j++){
fwrite(&imagem[i][j].r, 1 , sizeof (int), arquivo); /*salva as componentes*/
fwrite(&imagem[i][j].g, 1 , sizeof (int), arquivo); /*do arquivo em forma de*/
fwrite(&imagem[i][j].b, 1 , sizeof (int), arquivo); /*nova linha para cada cor*/
}
}
fclose(arquivo);
//abre a imagem em binário somente para leitura
arquivo = fopen("imagem.bin", "rb");
fread(code, 1, sizeof(code), arquivo);
fread(&larg, 1, sizeof(int), arquivo);
fread(&alt, 1, sizeof(int), arquivo);
fread(&max, 1, sizeof(int), arquivo);
for (i = 0; i < alt; i++){
for (i = 0; i < larg; i++){
fread(&imagem[i][j].r, 1, sizeof(int), arquivo);
fread(&imagem[i][j].g, 1, sizeof(int), arquivo);
fread(&imagem[i][j].b, 1, sizeof(int), arquivo);
}
}
fclose(arquivo);
So, in ppm format when P3 is specified it is by text, but the P6 parameter indicates that it is saved in binary, so much so that the implementation of it by text I have ready.
– pmargreff
@pmargreff Okay, I edited the answer, see if it’s cool now.
– Victor Stafusa