Ce sont des questions de traitement d'image qui n'ont pas grand chose a voir avec leur affichage.
Globalement, une image en mémoire est un tableau de pixel. Un pixel pouvant etre beaucoup de chose. Si ton image est en couleur, c'est alors trois composantes: R, G et B ou Y, U, V. Si elle est en niveau de gris, c'est juste son intensité Y (si je ne me trompe pas).
Une autre question est celle du stockage d'une image dans un fichier. La, il y a des tonnes de format. Je te conseil de regarder pour commencer le format de fichier PNG (en P3) dans le quel, basiquement, les pixel sont stocké sous forme ascii. C'est un format peu efficace, mais qui est facil a parser et donc, il est facil de faire des entré sortie dessus.
PS: je pense que gimp sait ecrire et lire un fichier au format pnm. Sinon, ce n'est pas ce qui manque sous linux. Fais la completion sur pnm dans ton shell, tu trouvera une plethore d'outile