我试图在C程序中编写一个PGM文件,但是一旦写入,如果我尝试打开它查看图像,就会被告知无法确定图像文件格式。
但是,如果我在geany中创建一个新文件,将数据复制过来,然后将THAT另存为新的PGM,则可以正常工作。
知道为什么会这样吗?
FILE * grey = fopen("greyscale.pgm", "w");
fprintf(grey, "P2 \r\n%d %d \r\n255 \r\n", width, height);
for (i = 0; i < width; i++) {
for (j = 0; j < height; j++) {
fprintf(grey, "%d ", ((imageArray[i][j].red + imageArray[i][j].green + imageArray[i][j].blue)/3));
}
fprintf(grey, "\r\n");
}
我正在将彩色图像转换为灰度。
最佳答案
我认为您不应将\r\n
用作行定界符,而应仅使用\n
。另外,请检查没有超过70个字符的行。由于每个像素最多需要4个字符(3个空格),因此每17个像素后插入\n
。
您可以将实线与注释分开(例如:
pixel11 pixel12 pixel13
pixel14 pixel15
# switch to next row
pixel21 pixel22 pixel23
pixel24 pixel25
# etc.