Mercurial > hg > orthanc
diff OrthancServer/Internals/DicomImageDecoder.cpp @ 2281:e002430baa41
Fix issue #44 (Bad interpretation of photometric interpretation MONOCHROME1)
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 09 Jun 2017 16:14:52 +0200 |
parents | a3a65de1840f |
children | 96b3ec054b69 |
line wrap: on
line diff
--- a/OrthancServer/Internals/DicomImageDecoder.cpp Mon May 22 20:39:53 2017 +0200 +++ b/OrthancServer/Internals/DicomImageDecoder.cpp Fri Jun 09 16:14:52 2017 +0200 @@ -727,7 +727,8 @@ void DicomImageDecoder::ApplyExtractionMode(std::auto_ptr<ImageAccessor>& image, - ImageExtractionMode mode) + ImageExtractionMode mode, + bool invert) { if (image.get() == NULL) { @@ -761,6 +762,11 @@ if (ok) { assert(image.get() != NULL); + + if (invert) + { + Orthanc::ImageProcessing::Invert(*image); + } } else { @@ -771,9 +777,10 @@ void DicomImageDecoder::ExtractPngImage(std::string& result, std::auto_ptr<ImageAccessor>& image, - ImageExtractionMode mode) + ImageExtractionMode mode, + bool invert) { - ApplyExtractionMode(image, mode); + ApplyExtractionMode(image, mode, invert); PngWriter writer; writer.WriteToMemory(result, *image); @@ -783,6 +790,7 @@ void DicomImageDecoder::ExtractJpegImage(std::string& result, std::auto_ptr<ImageAccessor>& image, ImageExtractionMode mode, + bool invert, uint8_t quality) { if (mode != ImageExtractionMode_UInt8 && @@ -791,7 +799,7 @@ throw OrthancException(ErrorCode_ParameterOutOfRange); } - ApplyExtractionMode(image, mode); + ApplyExtractionMode(image, mode, invert); JpegWriter writer; writer.SetQuality(quality);