Je n´ai pas de bonne connaissance en programmation et je ne comprends pas bien tes exlications
alors oublie ce que j´ai dit, ça te parlera plus dans qq années.
En attendant, pour ton soucis, il doit exister des convertisseurs en ligne de commande, mais c´est une bon exercice que de la faire " à la main".
Commence par te procurer une lib graphique supportant le format JPG, c´est pas des plus trivial à lire écrire. Ensuite je ne crois pas qu´il y ait de format définissant le 16 couleur comme une structure à part entière : le mieux sera d´utiliser un JPG dans le meme format que celui d´entrée, simplement en remplaçant les couleurs des pixels.
Il te faudra faire un peu de traitement d´image pour définir les couleurs que tu souhaites utiliser pour l´image de sortie ( pistes : thèorème du centroïde, quantification sur n bits).
ma proposition :
1) tu trouves une lib simple supportant le JPG
2) tu commences par vérifier que ça marche en sortant la meme image qu´en entrée
3) tu lis les données de l´image et tu détermines la palette de couleurs à utiliser ( centroïde, le mot fait peur, mais c´est relation barycentrique adaptative ; on itère jusqu´à trouver les vecteurs -tes couleurs- idéaux pour representer le signal)
4) tu remplaces la couleur de chaque pixel par une des couleurs de ta palette ( genre erreur quadratique minimale dans R^3)