I'm trying to write a program to blur an image, but first of am trying to see if I can even reproduce the image, pixel by pixel, in another file. I've allocated a 2-dimensional char array to hold the value of each pixel in the image.
Note: The image is in grayscale, and it is of type .raw
However, whenever I attempt to read the pixels into my 2D array, my program crashes. I feel like it has something to do with me not looping through the dimensions of the image correctly, but I'm not sure.
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fin, *fout;
    char path_in[64], path_out[64], **rev, px;
    int width, height, read, i, j;
    printf("Input file name: ");
    scanf("%s", path_in);
    printf("Output file name: ");
    scanf("%s", path_out);
    printf("Width of image (in pixels): ");
    scanf("%d", &width);
    printf("Height of image (in pixels): ");
    scanf("%d", &height);
    fin = fopen(path_in, "rb");
    fout = fopen(path_out, "wb");
    row = 0;
    rev = (char **)malloc(height * sizeof(char));
    for(i = 0; i < width; i++)
        rev[i] = (char *)malloc(width * sizeof(char));
    for(i = 0; i < height; i++)
    {
        for(j = 0; j < width; j++)
        {
            read = fread(&px, sizeof(char), 1, fin);
            rev[i][j] = px;
        }
    }
    fclose(fout);
    fclose(fin);
    return 0;
}
My program is pretty narrow, as it only accepts grayscale .raw image type.
 
     
     
     
    