Those two functions of DicomImage sometimes get people confused as which should they use and which not. A few points here to clarify so after reading this you should be able to tell the difference. Neither method changes anything in the original image - they both return modified copies.

SubImage

  • Returns an Identical copy of the original, apart from the left, top, width and height. The returned new DicomImage could be just an area of the original image or of the same size.
  • Patient demographics and all other DICOM attributes are copied into the new Image.
  • Flip/Rotate state information is used and applied to the new Image.
  • Annotations will not be copied into the new Image.
  • A new Instance UID is allocated (and you should consider changing the SeriesUID if sending elsewhere)
  • The result is a fully conformant DICOM image (assuming the original was!)

PrinterImage

  • Returns a fully rendered Image which is scaled to the chosen bit depth, so no further windowing is required.
  • Patient demographics are removed
  • Annotations will be burned into Pixel of the new Image if ShowAnnotations is set to true, otherwise annotations will be lost.
  • The resulting “image” only has the 0028 group element and pixel data - nothing else
  • It is useful for Printing (as the name implies!) or for other purposes where only basic pixel data is needed, including as an intermediate for before using the pure image output routines such as Export, Picture or PictureWithLUT