Mercurial > hg > orthanc
diff Plugins/Engine/OrthancPlugins.cpp @ 1608:adc6a5704cdb
OrthancPluginConvertPixelFormat
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 02 Sep 2015 13:58:08 +0200 |
parents | 31f4adefb88f |
children | c74495267acf |
line wrap: on
line diff
--- a/Plugins/Engine/OrthancPlugins.cpp Tue Sep 01 17:40:45 2015 +0200 +++ b/Plugins/Engine/OrthancPlugins.cpp Wed Sep 02 13:58:08 2015 +0200 @@ -42,10 +42,12 @@ #include "../../OrthancServer/ServerToolbox.h" #include "../../Core/Compression/ZlibCompressor.h" #include "../../Core/Compression/GzipCompressor.h" +#include "../../Core/ImageFormats/Image.h" #include "../../Core/ImageFormats/PngReader.h" #include "../../Core/ImageFormats/PngWriter.h" #include "../../Core/ImageFormats/JpegReader.h" #include "../../Core/ImageFormats/JpegWriter.h" +#include "../../Core/ImageFormats/ImageProcessing.h" #include <boost/regex.hpp> @@ -1168,6 +1170,18 @@ } + void OrthancPlugins::ConvertPixelFormat(const void* parameters) + { + const _OrthancPluginConvertPixelFormat& p = *reinterpret_cast<const _OrthancPluginConvertPixelFormat*>(parameters); + const ImageAccessor& source = *reinterpret_cast<const ImageAccessor*>(p.source); + + std::auto_ptr<ImageAccessor> target(new Image(Convert(p.targetFormat), source.GetWidth(), source.GetHeight())); + ImageProcessing::Convert(*target, source); + + *(p.target) = reinterpret_cast<OrthancPluginImage*>(target.release()); + } + + bool OrthancPlugins::InvokeService(_OrthancPluginService service, const void* parameters) { @@ -1530,6 +1544,10 @@ CallHttpClient(parameters); return true; + case _OrthancPluginService_ConvertPixelFormat: + ConvertPixelFormat(parameters); + return true; + default: { // This service is unknown to the Orthanc plugin engine