+ }
+ // Gros soucis :
+ // jpg->DataImg est alloue en int32 systematiquement :
+ // il faut le copier pixel par pixel dans destination ...
+ // ... qui est un void *
+ // --> du CAST sportif a faire ...
+
+ // memcpy(destination,jpg->DataImg,lgrTotale);
+
+ // Bon ...
+ // ... y'a p't etre + ruse (?)
+
+ int nb;
+ string str_nb=gdcmHeader::GetPubElValByNumber(0x0028,0x0100);
+ if (str_nb == "gdcm::Unfound" ) {
+ nb = 16;
+ } else {
+ nb = atoi(str_nb.c_str() );
+ if (nb == 12) nb =16;
+ }
+ int nBytes= nb/8;
+ int * dataJpg = jpg->DataImg;
+ int taille = GetXSize() * GetYSize() * GetZSize() * GetSamplesPerPixel();
+
+ switch (nBytes) {
+
+ case 1:
+ {
+ unsigned short *dest = (unsigned short *)destination;
+ for (int i=0; i<taille; i++) {
+ if (DEBUG)
+ if (*(dataJpg +i) >255) printf("data %d\n",*(dataJpg +i) );
+ *((unsigned char *)dest+i) = *(dataJpg +i);
+ }
+ }
+ break;
+
+ case 2:
+ {
+ unsigned short *dest = (unsigned short *)destination;
+
+ // etonnant (?)
+ // la ligne commentee ci-dessous fait passer l'exec de 0.15 sec a 5.5 sec
+ // pour la meme image 512*512 ...
+ // optimiseur pas mis en oeuvre (?)
+ //for (int i=0; i<GetXSize() * GetYSize() * GetZSize(); i++) {
+
+ for (int i=0; i<taille; i++) {
+ *((unsigned short *)dest+i) = *(dataJpg +i);
+ }
+ }
+ break;
+
+ case 4:
+ {
+ unsigned int *dest=(unsigned int *)destination;
+ for (int i=0;i<taille; i++) {
+ *((unsigned int *)dest+i) = *(dataJpg +i);
+ }
+ }
+ break;
+ }
+