Сохранить изображение PGM в C - PullRequest
0 голосов
/ 16 мая 2018

У меня есть массив 230x230, содержащий значения: ноль (черный пиксель) и значения от 25 до 1200. Я хочу сохранить этот массив как изображение PGM.

Я сделал заголовок изображения: P5, 230x230, 255 (как максимальное значение), и я записал значения массива без изменений. Это дало мне изображение, но не в очень правильном виде (много белых областей - 2-е изображение)

Итак, я подумал, что мне следует сделать некоторые масштабирования для значений. Я снова изменил масштаб всех значений до 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;
}

Спасибо.

...