[Dcmlib] [Fwd: Re: Lecture / Ecriture DICOM #2]

Mathieu Malaterre mathieu.malaterre at kitware.com
Wed May 5 19:46:43 CEST 2004


Va falloir etre patient je peux pas me connecter a tux:

$ cvs up -dPA 
                                           ~/Creatis/malaterre/gdcm
cvs [update aborted]: connect to 
cvs.creatis.insa-lyon.fr(195.220.108.5):2402 failed: Connection refused


Merci du patch
Mathieu

Jean-Pierre Roux wrote:
> 
> 
> Mathieu Malaterre wrote:
> 
>> Ok,
>>     J'ai enfin elucide le mystere de l'ecriture DICOM ici, y'avait 
>> deja un probleme pour l'entete DICOM (j'ai du remplacer un calloc par 
>> un new, et pas faire un memset apres)
>>     Mais le plus important c'est qu'il faut appeler 
>> gdcmFile::GetImageData() pour que ca marche et je ne comprends pas 
>> bien pourquoi: 
> 
> 
> En effet !
> Il y a un flag de nom PixelRead, positionné à -1 dans le constructeur du 
> gdcmFile qui signale si les Pixels ont été lus ou non, pour éviter qu'un 
> mal dégourdi n'essaye de ré-écrire une image sans avoir lu les pixels.
> 
> Il y a un maldégourdi qui a oublié de passer ce flag à 1 dans 
> SetImageData. cxx
> 
> 
> bool gdcmFile::SetImageData(void * inData, size_t ExpectedSize) {
>   Header->SetImageDataSize(ExpectedSize);
>   PixelData = inData;
>   lgrTotale = ExpectedSize;
> 
> PixelRead = 1;  // A RAJOUTER.
> 
>   return(true);
> }
> Pourrais-tu faire la modif et la commiter si ça marche (je suis en 
> pleine phase de modifs cataclysmiques, je ne veux pas prendre le rique 
> de faire un commit sur des fichiers 'actifs')
> 
> Thx
> 
>>
>>
>>
>>   gdcmHeader *header = new gdcmHeader( "foo.dcm" );
>>   gdcmFile   *file = new gdcmFile( header );
>>
>>
>>   file->GetImageData(); //EXTREMELY IMPORTANT ??
>>
>>   unsigned short *imageData = new unsigned short[x*y];
>>   unsigned short *begin = imageData;
>>   for(int i=0; i     {
>>     for(int j=0; j       {
>>       if( i == j || (i+1) == j || (i-1) == j)
>>         *begin++ = 0;
>>       else
>>         *begin++ = 255*255;
>>       }
>>     }
>>
>>   file->SetImageData(imageData, dataSize);
>>   file->WriteDcmExplVR( filename2 );
>>
>>
>> ca ca ne marche que si j'appelle GetImageData ? Je comprends pas vu 
>> que je n'utilise pas l'image, est-ce qu'il y a une methode plus 
>> appropriee que celle la et qui fais que l'ecriture marche qd meme ?
>>
>> Merci
>> Mathieu
>>
>>
> 
> 
> 
> 
> _______________________________________________
> Dcmlib mailing list
> Dcmlib at creatis.insa-lyon.fr
> http://www.creatis.insa-lyon.fr/mailman/listinfo/dcmlib
> 






More information about the Dcmlib mailing list