<br><font size=2 face="sans-serif">Mathieu,</font>
<br>
<br><font size=2 face="sans-serif">ca ca fonctionne chez moi... </font>
<br><font size=2 face="sans-serif">La boucle for est un peu tricky, mais ca fonctionne car on passe de 16 a 8 et pas de 8 a 16 bits. Si tel etait le cas, il faudrait faire une boucle decroissante de rescaleSize a 0 !!! :p</font>
<br>
<br><font size=2 face="sans-serif">int TestRescaleDicom(char *input)</font>
<br><font size=2 face="sans-serif">{</font>
<br><font size=2 face="sans-serif"> gdcm::File *f1 = new gdcm::File( input );</font>
<br><font size=2 face="sans-serif"> gdcm::Header *header = f1->GetHeader();</font>
<br>
<br><font size=2 face="sans-serif"> int dataSize = f1->GetImageDataSize();</font>
<br><font size=2 face="sans-serif"> int rescaleSize = dataSize / 2;</font>
<br>
<br><font size=2 face="sans-serif"> // Since we know the image is 16bits:</font>
<br><font size=2 face="sans-serif"> uint16_t* imageData = (uint16_t*)f1->GetImageData();</font>
<br>
<br><font size=2 face="sans-serif"> header->ReplaceOrCreateByNumber( "8", 0x0028, 0x0100);// BitsAllocated</font>
<br><font size=2 face="sans-serif"> header->ReplaceOrCreateByNumber( "8", 0x0028, 0x0101);// BitsStored</font>
<br><font size=2 face="sans-serif"> header->ReplaceOrCreateByNumber( "7", 0x0028, 0x0102);// HighBit</font>
<br><font size=2 face="sans-serif"> header->SetImageDataSize(rescaleSize);</font>
<br>
<br><font size=2 face="sans-serif"> // modify grayvalues: We assume the value were from 0 to 4*uint8_t max</font>
<br><font size=2 face="sans-serif"> // and convert from 16 bits to 8 bits...</font>
<br><font size=2 face="sans-serif"> uint8_t* tmp = (uint8_t *)imageData;</font>
<br><font size=2 face="sans-serif"> for(int i=0; i<rescaleSize; i++) tmp[i] = imageData[i]/4;</font>
<br>
<br><font size=2 face="sans-serif"> // write the image to a new file</font>
<br><font size=2 face="sans-serif"> f1->WriteDcmExplVR( "/tmp/output.dcm" );</font>
<br>
<br><font size=2 face="sans-serif"> // free memory</font>
<br><font size=2 face="sans-serif"> delete f1;</font>
<br>
<br><font size=2 face="sans-serif"> return 0;</font>
<br><font size=2 face="sans-serif">}</font>