From b13f357d4977864306de64ae56f58e5208131685 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Tue, 13 Sep 2011 14:15:57 +0000
Subject: [PATCH] LMS-2502 image transformations: server side + client URLs

SVN: 22923
---
 .../cisd/imagereaders/ReadParams.java         | 16 ----------
 .../imagereaders/jai/TiffImageReader.java     | 32 ++++++++++---------
 2 files changed, 17 insertions(+), 31 deletions(-)

diff --git a/image_readers/source/java/ch/systemsx/cisd/imagereaders/ReadParams.java b/image_readers/source/java/ch/systemsx/cisd/imagereaders/ReadParams.java
index 11242175fa4..c62e5fdedea 100644
--- a/image_readers/source/java/ch/systemsx/cisd/imagereaders/ReadParams.java
+++ b/image_readers/source/java/ch/systemsx/cisd/imagereaders/ReadParams.java
@@ -35,22 +35,6 @@ public class ReadParams implements IReadParams
      */
     private Integer intensityRescalingChannel;
 
-    /**
-     * only supported from JAI readers.
-     */
-    private boolean allow16BitGrayscaleModel;
-
-
-    public boolean isAllow16BitGrayscaleModel()
-    {
-        return allow16BitGrayscaleModel;
-    }
-
-    public void setAllow16BitGrayscaleModel(boolean allow16BitGrayscaleModel)
-    {
-        this.allow16BitGrayscaleModel = allow16BitGrayscaleModel;
-    }
-
     public Integer getIntensityRescalingChannel()
     {
         return intensityRescalingChannel;
diff --git a/image_readers/source/java/ch/systemsx/cisd/imagereaders/jai/TiffImageReader.java b/image_readers/source/java/ch/systemsx/cisd/imagereaders/jai/TiffImageReader.java
index ec2890de7fc..35181ded737 100644
--- a/image_readers/source/java/ch/systemsx/cisd/imagereaders/jai/TiffImageReader.java
+++ b/image_readers/source/java/ch/systemsx/cisd/imagereaders/jai/TiffImageReader.java
@@ -31,7 +31,6 @@ import ch.systemsx.cisd.base.io.IRandomAccessFile;
 import ch.systemsx.cisd.imagereaders.IImageReader;
 import ch.systemsx.cisd.imagereaders.IReadParams;
 import ch.systemsx.cisd.imagereaders.ImageID;
-import ch.systemsx.cisd.imagereaders.ReadParams;
 
 /**
  * JAI {@link IImageReader} for TIFF files.
@@ -46,24 +45,16 @@ class TiffImageReader extends DefaultImageReader
         super(libraryName, readerName);
     }
 
-
     @Override
     public BufferedImage readImage(IRandomAccessFile handle, ImageID imageID, IReadParams params)
             throws IOExceptionUnchecked
     {
-        boolean allow16BitGrayscaleModel = false;
-        ReadParams readParams = (ReadParams) params;
-        if (readParams != null)
-        {
-            allow16BitGrayscaleModel = readParams.isAllow16BitGrayscaleModel();
-        }
-
         try
         {
             InputStream input = new AdapterIInputStreamToInputStream(handle);
             ImageDecoder decoder = ImageCodec.createImageDecoder(getName(), input, null);
             Raster raster = decoder.decodeAsRaster(imageID.getTimeSeriesIndex());
-            int bufferType = findBestImageBufferType(raster, allow16BitGrayscaleModel);
+            int bufferType = findBestImageBufferType(raster);
             BufferedImage image =
                     new BufferedImage(raster.getWidth(), raster.getHeight(), bufferType);
             image.setData(raster);
@@ -74,12 +65,23 @@ class TiffImageReader extends DefaultImageReader
         }
     }
 
-    private int findBestImageBufferType(Raster raster, boolean allow16BitGrayscaleModel)
+    private int findBestImageBufferType(Raster raster)
     {
-        boolean is16BitGrayscale =
-                raster.getNumBands() == 1 && raster.getSampleModel().getSampleSize()[0] == 16;
-        return is16BitGrayscale && allow16BitGrayscaleModel ? BufferedImage.TYPE_USHORT_GRAY
-                : BufferedImage.TYPE_INT_RGB;
+        boolean isGrayscale = raster.getNumBands() == 1;
+        int numberOfBits = raster.getSampleModel().getSampleSize()[0];
+        if (isGrayscale)
+        {
+            if (numberOfBits <= 8)
+            {
+                return BufferedImage.TYPE_BYTE_GRAY;
+            } else
+            {
+                return BufferedImage.TYPE_USHORT_GRAY;
+            }
+        } else
+        {
+            return BufferedImage.TYPE_INT_RGB;
+        }
     }
 
 }
\ No newline at end of file
-- 
GitLab