ces éléments pour étre sur ce sera les fwrite fread
L'écriture de l'image zoomée peut effectivement (se fera surement) via des fwrite mais la difficulté ne réside pas là. Il faut surtout écrire chaque pixel de l'image en entrée 4 fois en colonnes et 4 fois en lignes.
Le mieux c'est de traiter ton image en entrée ligne par ligne.
En remplaçant chaque valeur de pixel par un caractère pour que ce soit visuel :
soit une ligne en entrée "abcde"
tu dois créer une ligne 4 fois plus longue contenant "aaaabbbbccccddddeeee" et l'écrire 4 fois.
Après, c'est une sordide histoire d'offsets et d'indices dans les buffers d'entrée (dicom + entete + ...) et de sortie (la ligne 4 fois plus grance), du style :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
short *ligne_en_sortie = (short *)malloc(4*cote*sizeof(short));
/* je passe les déclarations de compteurs évidentes ! */
...
for (l=0;l<cote;l++)
{
/* decalage buffer entree pour ligne courante */
int offset_entree = entete + l * cote;
for (c=0;c<cote;c++)
for (i=0;i<4;i++)
ligne_en_sortie[c*4+i] = dicom[offset_entree+c];
for (i=0;i<4;i++)
fwrite(ligne_en_sortie,4*cote,sizeof(short),fpout);
} |
Après, pour l'entête, les seules indications que tu as sont maigres : on connait sa taille ... ouais ... sans plus d'info, tu buteras toujours là dessus.
Partager