я предложил бы такую альтернативу:
typedef struct
{
int width;
int heigth;
struct pixel *pixels;
} image;
каждый раз, вам нужно выделить:
image img;
/* init */
img.pixels=malloc(sizeof(struct pixel)*img.width*img.height);
*(img.pixels+img.height*i+j)
представляет img.pixels[i][j]
.