diff Applications/Dicomizer.cpp @ 326:9947e70cbcea

preparing padding of JPEG and PNG
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 17 Oct 2024 17:24:56 +0200
parents a92bb720f90b
children c42083d50ddf
line wrap: on
line diff
--- a/Applications/Dicomizer.cpp	Wed Oct 16 21:08:58 2024 +0200
+++ b/Applications/Dicomizer.cpp	Thu Oct 17 17:24:56 2024 +0200
@@ -1064,22 +1064,26 @@
   OrthancWSI::ImageCompression format = OrthancWSI::DetectFormatFromFile(path);
   LOG(WARNING) << "File format of the input image: " << EnumerationToString(format);
 
+  std::unique_ptr<OrthancWSI::SingleLevelDecodedPyramid> plainImage;
+
   switch (format)
   {
     case OrthancWSI::ImageCompression_Png:
     {
       sourceCompression = OrthancWSI::ImageCompression_Unknown;
-      return new OrthancWSI::TiledPngImage(path, 
-                                           parameters.GetTargetTileWidth(512), 
-                                           parameters.GetTargetTileHeight(512));
+      plainImage.reset(new OrthancWSI::TiledPngImage(path,
+                                                     parameters.GetTargetTileWidth(512),
+                                                     parameters.GetTargetTileHeight(512)));
+      break;
     }
 
     case OrthancWSI::ImageCompression_Jpeg:
     {
       sourceCompression = OrthancWSI::ImageCompression_Unknown;
-      return new OrthancWSI::TiledJpegImage(path, 
-                                            parameters.GetTargetTileWidth(512), 
-                                            parameters.GetTargetTileHeight(512));
+      plainImage.reset(new OrthancWSI::TiledJpegImage(path,
+                                                      parameters.GetTargetTileWidth(512),
+                                                      parameters.GetTargetTileHeight(512)));
+      break;
     }
 
     case OrthancWSI::ImageCompression_Tiff:
@@ -1104,13 +1108,9 @@
       try
       {
         sourceCompression = OrthancWSI::ImageCompression_Unknown;
-        return new OrthancWSI::PlainTiff(path,
-                                         parameters.GetTargetTileWidth(512),
-                                         parameters.GetTargetTileHeight(512),
-                                         parameters.GetPadding(),
-                                         parameters.GetBackgroundColorRed(),
-                                         parameters.GetBackgroundColorGreen(),
-                                         parameters.GetBackgroundColorBlue());
+        plainImage.reset(new OrthancWSI::PlainTiff(path,
+                                                   parameters.GetTargetTileWidth(512),
+                                                   parameters.GetTargetTileHeight(512)));
       }
       catch (Orthanc::OrthancException&)
       {
@@ -1122,6 +1122,19 @@
       break;
   }
 
+  if (plainImage.get() != NULL)
+  {
+    if (parameters.GetPadding() > 1)
+    {
+      plainImage->SetPadding(parameters.GetPadding(),
+                             parameters.GetBackgroundColorRed(),
+                             parameters.GetBackgroundColorGreen(),
+                             parameters.GetBackgroundColorBlue());
+    }
+
+    return plainImage.release();
+  }
+
   try
   {
     LOG(WARNING) << "Trying to open the input pyramid with OpenSlide";