I tried several ways, but failed.
1.
Code: Select all
DicomImage *pTempImg=new DicomImage(dcmDataset,xfer,CIF_AcrNemaCompatibility ,0,0);
pTempImg->rotateImage(90);
pTempImg->writeImageToDataset(*dcmDataset);
OFCondition a=dcmDataset->saveFile("rotatedImg.dcm",xfer);
pTempImg->writeBMP("rotatedImg.bmp",8,0);
but in rotatedImg.bmp,"L" is rotated 90 degree and on the buttom.
2. Seems I should write the dcmDataset.
Code: Select all
DicomImage *pTempImg=new DicomImage(dcmDataset,xfer,CIF_AcrNemaCompatibility ,0,0);
UINT16 overlayRows;
UINT16 overlayColumns;
dcmDataset->findAndGetUint16(DCM_OverlayRows,overlayRows);
dcmDataset->findAndGetUint16(DCM_OverlayColumns,overlayColumns);
pTempImg->rotateImage(90);
Uint8 *data=(Uint8*)pTempImg->getOverlayData(N,left_pos,top_pos,width,height,mode);
pTempImg->writeImageToDataset(*dcmDataset);
dcmDataset->putAndInsertUint8Array(DCM_OverlayData,data,width*height);
dcmDataset->putAndInsertUint16(DCM_OverlayRows,overlayColumns);
dcmDataset->putAndInsertUint16(DCM_OverlayColumns,overlayRows);
OFCondition a=dcmDataset->saveFile("rotatedImg.dcm",xfer);
3.Does it have something with DCM_OverlayOrigin?
And how to get DCM_OverlayOrigin?
Code: Select all
const Sint16 *overlayOrigin=new Sint16[2];
dcmDataset->findAndGetSint16Array(DCM_OverlayOrigin,overlayOrigin);
----------> it is right.
Problems solved!