Skip to content
Snippets Groups Projects
Commit d1339756 authored by felmer's avatar felmer
Browse files

LMS-2160 done

SVN: 20699
parent 3437bc41
No related branches found
No related tags found
No related merge requests found
...@@ -16,9 +16,12 @@ ...@@ -16,9 +16,12 @@
package ch.systemsx.cisd.openbis.dss.etl; package ch.systemsx.cisd.openbis.dss.etl;
import java.awt.image.BufferedImage;
import ch.systemsx.cisd.common.io.IContent; import ch.systemsx.cisd.common.io.IContent;
import ch.systemsx.cisd.openbis.dss.etl.dto.ImageTransfomationFactories; import ch.systemsx.cisd.openbis.dss.etl.dto.ImageTransfomationFactories;
import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.RequestedImageSize; import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.RequestedImageSize;
import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil;
import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent; import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
/** /**
...@@ -30,13 +33,15 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.Color ...@@ -30,13 +33,15 @@ import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.Color
public class AbsoluteImageReference extends AbstractImageReference public class AbsoluteImageReference extends AbstractImageReference
{ {
private final IContent content; private final IContent content;
private final String uniqueId; private final String uniqueId;
private final RequestedImageSize imageSize; private final RequestedImageSize imageSize;
private final ImageTransfomationFactories imageTransfomationFactories; private final ImageTransfomationFactories imageTransfomationFactories;
private BufferedImage image;
// This is an artificial value which helps to keep coloring channels constant. Starts with 0. // This is an artificial value which helps to keep coloring channels constant. Starts with 0.
// Unique for a given experiment or dataset (if channels are per dataset). // Unique for a given experiment or dataset (if channels are per dataset).
private int channelIndex; private int channelIndex;
...@@ -72,6 +77,15 @@ public class AbsoluteImageReference extends AbstractImageReference ...@@ -72,6 +77,15 @@ public class AbsoluteImageReference extends AbstractImageReference
{ {
return content; return content;
} }
public BufferedImage getImage()
{
if (image == null)
{
image = ImageUtil.loadImage(content, tryGetPage());
}
return image;
}
public RequestedImageSize getRequestedSize() public RequestedImageSize getRequestedSize()
{ {
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
package ch.systemsx.cisd.openbis.dss.etl.dataaccess; package ch.systemsx.cisd.openbis.dss.etl.dataaccess;
import java.awt.image.BufferedImage;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import ch.systemsx.cisd.base.image.IImageTransformerFactory; import ch.systemsx.cisd.base.image.IImageTransformerFactory;
...@@ -30,6 +32,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.ImageChannelStackR ...@@ -30,6 +32,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.ImageChannelStackR
import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.ImageChannelStackReference.HCSChannelStackByLocationReference; import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.ImageChannelStackReference.HCSChannelStackByLocationReference;
import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.ImageChannelStackReference.MicroscopyChannelStackByLocationReference; import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.ImageChannelStackReference.MicroscopyChannelStackByLocationReference;
import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.RequestedImageSize; import ch.systemsx.cisd.openbis.dss.generic.server.images.dto.RequestedImageSize;
import ch.systemsx.cisd.openbis.dss.generic.shared.dto.Size;
import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.HCSDatasetLoader; import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.HCSDatasetLoader;
import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent; import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.ColorComponent;
import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingReadonlyQueryDAO; import ch.systemsx.cisd.openbis.plugin.screening.shared.imaging.dataaccess.IImagingReadonlyQueryDAO;
...@@ -82,6 +85,21 @@ public class ImagingDatasetLoader extends HCSDatasetLoader implements IImagingDa ...@@ -82,6 +85,21 @@ public class ImagingDatasetLoader extends HCSDatasetLoader implements IImagingDa
return null; return null;
} }
AbsoluteImageReference imgRef = createAbsoluteImageReference(imageDTO, channel, imageSize); AbsoluteImageReference imgRef = createAbsoluteImageReference(imageDTO, channel, imageSize);
if (thumbnailPrefered)
{
Size requestedThumbnailSize = imageSize.tryGetThumbnailSize();
BufferedImage image = imgRef.getImage();
double width = 1.5 * image.getWidth();
double height = 1.5 * image.getHeight();
if (requestedThumbnailSize.getWidth() > width || requestedThumbnailSize.getHeight() > height)
{
imageDTO = tryGetImageDTO(channelStackReference, false, channel.getId(), datasetId);
if (imageDTO != null)
{
imgRef = createAbsoluteImageReference(imageDTO, channel, imageSize);
}
}
}
return imgRef; return imgRef;
} }
......
...@@ -430,7 +430,7 @@ public class ImageChannelsUtils ...@@ -430,7 +430,7 @@ public class ImageChannelsUtils
private static BufferedImage calculateSingleImage(AbsoluteImageReference imageReference) private static BufferedImage calculateSingleImage(AbsoluteImageReference imageReference)
{ {
long start = operationLog.isDebugEnabled() ? System.currentTimeMillis() : 0; long start = operationLog.isDebugEnabled() ? System.currentTimeMillis() : 0;
BufferedImage image = loadImage(imageReference); BufferedImage image = imageReference.getImage();
if (operationLog.isDebugEnabled()) if (operationLog.isDebugEnabled())
{ {
operationLog.debug("Load original image: " + (System.currentTimeMillis() - start)); operationLog.debug("Load original image: " + (System.currentTimeMillis() - start));
...@@ -468,11 +468,6 @@ public class ImageChannelsUtils ...@@ -468,11 +468,6 @@ public class ImageChannelsUtils
return image; return image;
} }
private static BufferedImage loadImage(AbsoluteImageReference imageReference)
{
return ImageUtil.loadImage(imageReference.getContent(), imageReference.tryGetPage());
}
/** /**
* @param allChannelsMerged if true then we use one special transformation on the merged images * @param allChannelsMerged if true then we use one special transformation on the merged images
* instead of transforming every single image. * instead of transforming every single image.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment