首页 > 解决方案 > 在 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;
}

谢谢你。

标签: cpgm

解决方案


推荐阅读