Mercurial > hg > orthanc-neuro
changeset 6:1e000761eb62
added gzip compression of nifti
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 25 Apr 2022 16:09:07 +0200 |
parents | ef6ddcfed855 |
children | c91e2383a5a6 |
files | Sources/Plugin/Plugin.cpp |
diffstat | 1 files changed, 36 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/Sources/Plugin/Plugin.cpp Mon Apr 25 14:57:58 2022 +0200 +++ b/Sources/Plugin/Plugin.cpp Mon Apr 25 16:09:07 2022 +0200 @@ -149,7 +149,22 @@ return instance.release(); #endif -} +} + + +static bool HasBooleanFlag(const OrthancPluginHttpRequest* request, + const std::string& flag) +{ + for (uint32_t i = 0; i < request->getCount; i++) + { + if (std::string(request->getKeys[i]) == flag) + { + return true; + } + } + + return false; +} void SeriesToNifti(OrthancPluginRestOutput* output, @@ -196,10 +211,18 @@ } } + const bool compress = HasBooleanFlag(request, "compress"); + std::string nifti; - CreateNifti(nifti, collection, false /* todo - compress */); + CreateNifti(nifti, collection, compress); - const std::string contentDisposition = "filename=\"" + seriesId + ".nii\""; + std::string filename = seriesId + ".nii"; + if (compress) + { + filename += ".gz"; + } + + const std::string contentDisposition = "filename=\"" + filename + "\""; OrthancPluginSetHttpHeader(context, output, "Content-Disposition", contentDisposition.c_str()); OrthancPluginAnswerBuffer(context, output, nifti.c_str(), nifti.size(), "application/octet-stream"); @@ -224,10 +247,18 @@ Neuro::DicomInstancesCollection collection; collection.AddInstance(AcquireInstance(instanceId), instanceId); + const bool compress = HasBooleanFlag(request, "compress"); + std::string nifti; - CreateNifti(nifti, collection, false /* todo - compress */); + CreateNifti(nifti, collection, compress); - const std::string contentDisposition = "filename=\"" + instanceId + ".nii\""; + std::string filename = instanceId + ".nii"; + if (compress) + { + filename += ".gz"; + } + + const std::string contentDisposition = "filename=\"" + filename + "\""; OrthancPluginSetHttpHeader(context, output, "Content-Disposition", contentDisposition.c_str()); OrthancPluginAnswerBuffer(context, output, nifti.c_str(), nifti.size(), "application/octet-stream");