C 在读取 .ppm 时不会转到下一行

  • 本文关键字:一行 读取 ppm c ppm
  • 更新时间 :
  • 英文 :


所以我有一个.ppm文件,目标是将每个像素读取到相应的r[] g[]和b[]元素。代码读取第一行(idk 正确与否),但它没有更进一步。我不确定我是否需要这些getc(fp);才能跳过空格。读取每一行并将其解析为 int 不是一种选择。感谢您的任何帮助。

int main(int argc, char** argv) 
    {
        int height;
        int width;
        int max;
        FILE *fp;
        fp = fopen("vit_small.ppm", "r");
        fscanf(fp, "%*[^n]n", NULL);
        fscanf(fp, "%d %d", &width, &height);
        printf("Width is %d height is %d n", width, height);
        fscanf(fp, "%d", &max);
        printf("Maximum value %d n", max);
        int r [height][width];
        int g [height][width];
        int b [height][width];
        int hist [5];
        int w = 0;
        int h = 0;
        char buffer [1000];
        for (;w<height;w++)
        {
            printf("Row number %d n", w);
            for (;h<width;h++)
                {
                fread(&r[w][h], 1, 1, fp);
                printf("%d ", r[w][h]);
                getc(fp);
                fread(&g[w][h], 1, 1, fp);
                printf("%d ", g[w][h]);
                getc(fp);
                fread(&b[w][h], 1, 1, fp);
                printf("%d ", b[w][h]);
                getc(fp);
                }
            getc(fp);
            printf("n");
        }
        int i = 0;
        int j = 0;
        for (;i<height; i++) 
        {
            for (;j<width; j++) 
            {
                printf("%d %d %d ", r[i][j], g[i][j], b[i][j]);
            }
        printf("n");
        }
     fclose(fp);
     FILE * res;
     res = fopen ("Image_output.ppm", "w");
     fprintf (res, "P6n");
     fprintf(res, "%dn", width);
     fprintf(res, "%dn", height);
     fprintf(res, "%dn", max);
     i = 0;
     j = 0;
     for(; i < height; i++)
     {
         for(; j < width; j++)
         {
             fprintf(res, "%d %d %d", r[i][j], g[i][j], b[i][j]);
         }
         fprintf(res,"n");
     }
        return (EXIT_SUCCESS);
    }

PPM 的 P6 格式将每个主数据库存储为一个字节,没有行和空格。 因此,如果图像为 10 x 6,则在 255 和换行符之后将有 180 个字节 (10x6x3)。 看PPM上的维基百科条目。

相关内容

  • 没有找到相关文章

最新更新