From b0d10a62e92a13dea900e88d0a7003a64a96f6c0 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 31 Aug 2011 11:03:12 +0000 Subject: [PATCH] revert using new fast library for PNGs SVN: 22740 --- .../dss/etl/Hdf5ThumbnailGenerator.java | 6 +++++- .../ConvertToolImageTransformer.java | 14 +++++++++++-- .../server/images/ImageChannelsUtils.java | 21 ++++++++++++++++++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/Hdf5ThumbnailGenerator.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/Hdf5ThumbnailGenerator.java index bb018f9b2bd..1067b4f8431 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/Hdf5ThumbnailGenerator.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/Hdf5ThumbnailGenerator.java @@ -26,6 +26,8 @@ import java.util.Arrays; import java.util.Collection; import java.util.List; +import javax.imageio.ImageIO; + import org.apache.log4j.Logger; import ch.systemsx.cisd.base.utilities.OSUtilities; @@ -195,7 +197,9 @@ class Hdf5ThumbnailGenerator implements IHDF5WriterClient ImageUtil.rescale(image, thumbnailsStorageFormat.getMaxWidth(), thumbnailsStorageFormat.getMaxHeight(), false, thumbnailsStorageFormat.isHighQuality()); - ImageUtil.writeImageToPng(thumbnail, bufferOutputStream); + // TODO 2011-08-31, Franz-Josef Elmer: Uncomment when new fast method is working correctly for colored images +// ImageUtil.writeImageToPng(thumbnail, bufferOutputStream); + ImageIO.write(thumbnail, "png", bufferOutputStream); return bufferOutputStream.toByteArray(); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/transformations/ConvertToolImageTransformer.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/transformations/ConvertToolImageTransformer.java index e83d7eac655..085533f7921 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/transformations/ConvertToolImageTransformer.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/dto/api/v1/transformations/ConvertToolImageTransformer.java @@ -30,6 +30,8 @@ import java.util.Arrays; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import javax.imageio.ImageIO; + import org.apache.log4j.Logger; import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; @@ -48,7 +50,6 @@ import ch.systemsx.cisd.imagereaders.ImageID; import ch.systemsx.cisd.imagereaders.ImageReaderConstants; import ch.systemsx.cisd.imagereaders.ImageReaderFactory; import ch.systemsx.cisd.openbis.dss.etl.dto.api.v1.transformations.ConvertToolImageTransformerFactory.ToolChoice; -import ch.systemsx.cisd.openbis.dss.generic.shared.utils.ImageUtil; /** * An {@link IStreamingImageTransformer} using the convert command line tool for transformations. @@ -129,7 +130,9 @@ public class ConvertToolImageTransformer implements IStreamingImageTransformer { try { - byte[] input = ImageUtil.imageToPngFast(image); + // TODO 2011-08-31, Franz-Josef Elmer: Uncomment when new fast method is working correctly for colored images +// byte[] input = ImageUtil.imageToPngFast(image); + byte[] input = toByteArray(image); byte[] output = transform(input); return toBufferedImage(output); } catch (IOException ioex) @@ -263,4 +266,11 @@ public class ConvertToolImageTransformer implements IStreamingImageTransformer return result; } + private byte[] toByteArray(BufferedImage image) throws IOException + { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ImageIO.write(image, PNG, bos); + return bos.toByteArray(); + } + } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java index 53475650208..5b0f23c4d72 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/generic/server/images/ImageChannelsUtils.java @@ -21,11 +21,15 @@ import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import javax.imageio.ImageIO; + import org.apache.log4j.Logger; import ch.rinn.restrictions.Private; @@ -862,10 +866,25 @@ public class ImageChannelsUtils return new Color(rgb[0], rgb[1], rgb[2], rgb[3]).getRGB(); } + private static IContent createPngContent(BufferedImage image, String nameOrNull) { - final byte[] output = ImageUtil.imageToPngFast(image); + // TODO 2011-08-31, Franz-Josef Elmer: Uncomment when new fast method is working correctly for colored images +// final byte[] output = ImageUtil.imageToPngFast(image); + final byte[] output = writeBufferImageAsPng(image).toByteArray(); return new ByteArrayBasedContent(output, nameOrNull); } + private static ByteArrayOutputStream writeBufferImageAsPng(BufferedImage image) + { + ByteArrayOutputStream output = new ByteArrayOutputStream(); + try + { + ImageIO.write(image, "png", output); + } catch (IOException ex) + { + throw EnvironmentFailureException.fromTemplate("Cannot encode image.", ex); + } + return output; + } } -- GitLab