在C中保存PGM图像

时间:2018-05-16 14:15:28

标签: c pgm

我有一个数组230x230包含值:零(黑色像素),以及从25到1200的值。我想将此数组保存为PGM图像。

我制作了图像标题:P5,230x230,255(作为最大值),我写了数组值而没有改变。这给了我图像,但没有非常正确的外观(很多白色区域 - 第二张图像)

所以,我认为我应该对这些值进行一些缩放。再次,我将所有值重新调整为0-255,但这给了我完全黑色的图像。

有关我如何正确解决此问题的任何建议?我附上了(1)所需的图像和我已经得到的图像(2)。

在下面找到我使用过的代码:

void write_pgm(double **u, long nx, long ny, char *file_name) {
    int i, j; 
    unsigned char byte;
    FILE *outimage = fopen(file_name, "wb");

    fprintf(outimage, "P5\n"); /* format */
    fprintf(outimage, "%ld %ld\n", nx, ny); /* image size */
    fprintf(outimage, "255\n"); /* maximal value */

    for (j = 0; j < ny; j++) {
        for (i = 0; i < nx; i++) {
            byte = (unsigned char) (u[i][j]);
            fwrite(&byte, sizeof(unsigned char), 1, outimage);
        }
    }
    fclose(outimage);
    return;
}

谢谢。

0 个答案:

没有答案