From b1ee6c362ce079295ec412c2f006941516adf774 Mon Sep 17 00:00:00 2001 From: brinn <brinn> Date: Wed, 17 Aug 2011 21:38:57 +0000 Subject: [PATCH] add: IStreamingImageTransformer and factory improve: javadoc of IImageTransformer SVN: 22553 --- .../cisd/base/image/IImageTransformer.java | 8 +-- .../image/IStreamingImageTransformer.java | 53 +++++++++++++++++++ .../IStreamingImageTransformerFactory.java | 33 ++++++++++++ 3 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformer.java create mode 100644 base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformerFactory.java diff --git a/base/source/java/ch/systemsx/cisd/base/image/IImageTransformer.java b/base/source/java/ch/systemsx/cisd/base/image/IImageTransformer.java index 099f1653782..bcc9599a2c9 100644 --- a/base/source/java/ch/systemsx/cisd/base/image/IImageTransformer.java +++ b/base/source/java/ch/systemsx/cisd/base/image/IImageTransformer.java @@ -19,15 +19,17 @@ package ch.systemsx.cisd.base.image; import java.awt.image.BufferedImage; /** - * Interface for classes which can transform images. The transformation depends only some parameters - * and an image as input. + * Interface for classes which can transform images. The transformation depends only on some + * parameters and an image as input. * * @author Franz-Josef Elmer */ public interface IImageTransformer { /** - * Transforms the specified image. The transformation should change the input image. + * Transforms the specified image. The transformation must <i>not</i> change the input image. + * + * @return The transformed image. */ public BufferedImage transform(BufferedImage image); } diff --git a/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformer.java b/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformer.java new file mode 100644 index 00000000000..5520617fef3 --- /dev/null +++ b/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformer.java @@ -0,0 +1,53 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.base.image; + +import java.awt.image.BufferedImage; +import java.io.InputStream; +import java.io.OutputStream; + +import ch.systemsx.cisd.base.image.IImageTransformer; + +/** + * Interface for classes which can transform images in a streaming mode. The transformation depends + * only on some parameters and an image as stream of bytes. + * + * @author Bernd Rinn + */ +public interface IStreamingImageTransformer extends IImageTransformer +{ + + /** + * Transforms the image provided as the <var>input</var> stream. + * + * @return The transformed image. + */ + public BufferedImage transform(InputStream input); + + /** + * Transforms the image provided as the <var>input</var> stream. + * + * @return The transformed image as a byte array that constitutes a PNG file. + */ + public byte[] transformToPNG(InputStream input); + + /** + * Transforms the image provided as the <var>input</var> stream. Writes the transformed PNG file + * to the <var>output</var> stream. + */ + public void transformToPNGStream(InputStream input, OutputStream output); +} diff --git a/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformerFactory.java b/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformerFactory.java new file mode 100644 index 00000000000..b446c505831 --- /dev/null +++ b/base/source/java/ch/systemsx/cisd/base/image/IStreamingImageTransformerFactory.java @@ -0,0 +1,33 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.base.image; + +import ch.systemsx.cisd.base.image.IImageTransformerFactory; + +/** + * Factory creating an {@link IStreamingImageTransformer}. The parameters of the transformer should + * be stored as serializable attributes of concrete implementations of this interface. + * + * @author Bernd Rinn + */ +public interface IStreamingImageTransformerFactory extends IImageTransformerFactory +{ + /** + * Creates a transformer object based on the attributes of the factory. + */ + public IStreamingImageTransformer createTransformer(); +} -- GitLab