You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by re...@apache.org on 2009/12/17 22:21:04 UTC
svn commit: r891913 - in /incubator/clerezza: issues/CLEREZZA-42/
trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/
trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/main/java/org/apache/clerezza/utils/ima...
Author: reto
Date: Thu Dec 17 21:21:04 2009
New Revision: 891913
URL: http://svn.apache.org/viewvc?rev=891913&view=rev
Log:
CLEREZZA-42: closing
Removed:
incubator/clerezza/issues/CLEREZZA-42/
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/ (props changed)
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/pom.xml
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/main/java/org/apache/clerezza/utils/imagemagick/ImageMagickProvider.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/ (props changed)
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/pom.xml
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageProcessor.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/JavaGraphicsProvider.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/test/java/org/apache/clerezza/utils/imageprocessing/ImageProcessorTest.java
Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Dec 17 21:21:04 2009
@@ -0,0 +1 @@
+/incubator/clerezza/issues/CLEREZZA-42/org.apache.clerezza.utils.imagemagick:891740-891799
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/pom.xml
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/pom.xml?rev=891913&r1=891912&r2=891913&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/pom.xml (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/pom.xml Thu Dec 17 21:21:04 2009
@@ -34,5 +34,9 @@
<artifactId>org.apache.clerezza.rdf.jena.serializer</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.scr.annotations</artifactId>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/main/java/org/apache/clerezza/utils/imagemagick/ImageMagickProvider.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/main/java/org/apache/clerezza/utils/imagemagick/ImageMagickProvider.java?rev=891913&r1=891912&r2=891913&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/main/java/org/apache/clerezza/utils/imagemagick/ImageMagickProvider.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/main/java/org/apache/clerezza/utils/imagemagick/ImageMagickProvider.java Thu Dec 17 21:21:04 2009
@@ -49,6 +49,11 @@
import org.apache.clerezza.utils.imageprocessing.metadataprocessing.IptcDataSet;
import org.apache.clerezza.utils.imageprocessing.metadataprocessing.MetaData;
import org.apache.clerezza.utils.imageprocessing.metadataprocessing.MetaDataProcessor;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.Service;
/**
* This class implements interfaces that execute system calls to imageMagick.
@@ -60,25 +65,20 @@
* at: <a href='http://www.imagemagick.org/'>http://www.imagemagick.org/</a>.
* </p>
*
- * @scr.component
- * @scr.service interface="org.apache.clerezza.utils.imageprocessing.ImageProcessor"
- * @scr.property name="convert" value="convert"
- * description="Specifies the ImageMagick convert command."
- * @scr.property name="identify" value="identify"
- * description="Specifies the ImageMagick identify command."
- * @scr.property type="Integer" value="6" name="release_number"
- * description="Specifies ImageMagick release number (Syntax: release.version.majorRevision-minorRevision)."
- * @scr.property type="Integer" value="5" name="version_number"
- * description="Specifies ImageMagick version number (Syntax: release.version.majorRevision-minorRevision)."
- * @scr.property type="Integer" value="2" name="major_release_number"
- * description="Specifies ImageMagick major revision number (Syntax: release.version.majorRevision-minorRevision)."
- * @scr.property type="Integer" value="10" name="minor_release_number"
- * description="Specifies ImageMagick minor revision number (Syntax: release.version.majorRevision-minorRevision)."
- * @scr.property name="service.ranking" value=100
- *
* @author tio, hasan, daniel
*/
-public class ImageMagickProvider implements ImageProcessor, MetaDataProcessor {
+@Component(metatype=true)
+@Properties({
+ @Property(name="convert", value="convert", description="Specifies the ImageMagick convert command."),
+ @Property(name="identify", value="identify", description="Specifies the ImageMagick identify command."),
+ @Property(name="release_number", intValue=6, description="Specifies ImageMagick release number (Syntax: release.version.majorRevision-minorRevision)."),
+ @Property(name="version_number", intValue=5, description="Specifies ImageMagick version number (Syntax: release.version.majorRevision-minorRevision)."),
+ @Property(name="major_release_number", intValue=2, description="Specifies ImageMagick major revision number (Syntax: release.version.majorRevision-minorRevision)."),
+ @Property(name="minor_release_number", intValue=10, description="Specifies ImageMagick minor revision number (Syntax: release.version.majorRevision-minorRevision)."),
+ @Property(name="service.ranking", value="100")
+ })
+@Service(ImageProcessor.class)
+public class ImageMagickProvider extends ImageProcessor implements MetaDataProcessor {
private String convert = "convert";
private String identify = "identify";
@@ -87,9 +87,7 @@
private int imagemagickRevisionMajorNumber = 2;
private int imagemagickRevisionMinorNumber = 10;
- /**
- * @scr.reference
- */
+ @Reference
private Serializer serializer;
private final Logger logger = LoggerFactory.getLogger(getClass());
@@ -300,22 +298,11 @@
List<String> command = new ArrayList<String>(10);
command.add(convert);
command.add("-geometry");
- command.add(resizeFactor + "%");
+ command.add(100 * resizeFactor + "%");
return processImage(command, 100, image);
}
- @Override
- public BufferedImage makeAThumbnail(BufferedImage image, int newWidth,
- int newHeight) {
- BufferedImage tmp = resizeProportional(image, newWidth, newHeight);
- if (tmp == null) {
- return null;
- } else {
- return crop(tmp, newWidth, newHeight);
- }
- }
-
private BufferedImage crop(BufferedImage image, int newWidth, int newHeight) {
List<String> command = new ArrayList<String>(10);
command.add(convert);
Propchange: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Dec 17 21:21:04 2009
@@ -0,0 +1 @@
+/incubator/clerezza/issues/CLEREZZA-42/org.apache.clerezza.utils.imageprocessing:891738-891799
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/pom.xml
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/pom.xml?rev=891913&r1=891912&r2=891913&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/pom.xml (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/pom.xml Thu Dec 17 21:21:04 2009
@@ -33,4 +33,8 @@
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.scr.annotations</artifactId>
+ </dependency>
</dependencies></project>
\ No newline at end of file
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageProcessor.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageProcessor.java?rev=891913&r1=891912&r2=891913&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageProcessor.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/ImageProcessor.java Thu Dec 17 21:21:04 2009
@@ -26,9 +26,9 @@
* <code>java.awt.image.BufferedImage</code>. BufferedImage is an accessible
* buffer of image data (pixels and their RGB colors).
*
- * @author tio, hasan
+ * @author tio, hasan, mir
*/
-public interface ImageProcessor {
+public abstract class ImageProcessor {
/**
* Makes an image translucent. The parameter translucency has to be in the
@@ -37,7 +37,7 @@
* @param image
* @param translucency
*/
- public BufferedImage makeImageTranslucent(BufferedImage image,
+ public abstract BufferedImage makeImageTranslucent(BufferedImage image,
float translucency);
/**
@@ -46,7 +46,7 @@
* @param image
* @param color
*/
- public BufferedImage makeColorTransparent(BufferedImage image, Color color);
+ public abstract BufferedImage makeColorTransparent(BufferedImage image, Color color);
/**
* Flips an image
@@ -56,7 +56,7 @@
* 0 means horizontal
* 1 means vertical
*/
- public BufferedImage flip(BufferedImage image, int direction);
+ public abstract BufferedImage flip(BufferedImage image, int direction);
/**
* Rotates an image by an angle defined in degrees.
@@ -66,7 +66,7 @@
* @param image
* @param angle
*/
- public BufferedImage rotate(BufferedImage image, int angle);
+ public abstract BufferedImage rotate(BufferedImage image, int angle);
/**
* Resizes an image
@@ -75,7 +75,7 @@
* @param newWidth
* @param newHeight
*/
- public BufferedImage resize(BufferedImage image, int newWidth, int newHeight);
+ public abstract BufferedImage resize(BufferedImage image, int newWidth, int newHeight);
/**
* Resizes an image proportionally.
@@ -89,7 +89,7 @@
* @param newWidth
* @param newHeight
*/
- public BufferedImage resizeProportional(BufferedImage image, int newWidth,
+ public abstract BufferedImage resizeProportional(BufferedImage image, int newWidth,
int newHeight);
/**
@@ -100,7 +100,7 @@
* @param resizeFactorWidth
* @param resizeFactorHeight
*/
- public BufferedImage resizeRelative(BufferedImage image,
+ public abstract BufferedImage resizeRelative(BufferedImage image,
float resizeFactorWidth, float resizeFactorHeight);
/**
@@ -110,18 +110,30 @@
* @param image
* @param resizeFactor
*/
- public BufferedImage resizeRelativeProportional(BufferedImage image,
+ public abstract BufferedImage resizeRelativeProportional(BufferedImage image,
float resizeFactor);
/**
- * Create a thumbnail of the image. First the image will be resized and
- * cropped if necessary to obtain the end size as specified in the parameter
- * newWidth and newHeight.
- *
- * @param image
- * @param newWidth
- * @param newHeight
- */
- public BufferedImage makeAThumbnail(BufferedImage image,
- int newWidth, int newHeight);
+ * Create a thumbnail of the image. The image is scaled down so that height
+ * and width are smaller or equals to <code>height</code> and
+ * <code>width</code> respectively. If image is already smaller or equals
+ * <code>width</code> x <code>height</code> image is returned without
+ * transformation.
+ *
+ * @param image The image from which the thumbnails is derived.
+ * @param width The maximum width of the thumbnail
+ * @param height The maximum height of the thumbnail
+ */
+ public BufferedImage makeAThumbnail(BufferedImage image, int width, int height) {
+ int imgWidth = image.getWidth();
+ int imgHeight = image.getHeight();
+ if (imgWidth <= width && imgHeight <= height) {
+ return image;
+ }
+ float propWidth = (float) width / imgWidth;
+ float propHeight = (float) height / imgHeight;
+ float factor = (propWidth < propHeight) ? propWidth : propHeight;
+ BufferedImage img = resizeRelativeProportional(image, factor);
+ return img;
+ }
}
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/JavaGraphicsProvider.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/JavaGraphicsProvider.java?rev=891913&r1=891912&r2=891913&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/JavaGraphicsProvider.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/main/java/org/apache/clerezza/utils/imageprocessing/JavaGraphicsProvider.java Thu Dec 17 21:21:04 2009
@@ -30,19 +30,22 @@
import java.awt.image.DirectColorModel;
import java.awt.image.IndexColorModel;
import java.awt.image.PackedColorModel;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * @scr.component
- * @scr.service
- * interface="org.apache.clerezza.utils.imageprocessing.ImageProcessor"
+ * <code>ImageProcessor</code> implementation based on the Java Abstract
+ * Windowing Toolkit.
*
* @author tio, hasan
*/
-public class JavaGraphicsProvider implements ImageProcessor {
+@Component
+@Service(ImageProcessor.class)
+public class JavaGraphicsProvider extends ImageProcessor {
private final Logger logger = LoggerFactory.getLogger(getClass());
@@ -280,17 +283,4 @@
int newHeight = (int) (height * resizeFactor);
return resizeBufferedImage(image, newWidth, newHeight, width, height);
}
-
- @Override
- public BufferedImage makeAThumbnail(BufferedImage image,
- int newWidth, int newHeight) {
- //resizeProportional
- int width = image.getWidth();
- int height = image.getHeight();
- float propWidth = (float) newWidth / width;
- float propHeight = (float) newHeight / height;
- float factor = (propWidth > propHeight) ? propWidth : propHeight;
- BufferedImage img = resizeRelativeProportional(image, factor);
- return img;
- }
}
Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/test/java/org/apache/clerezza/utils/imageprocessing/ImageProcessorTest.java
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/test/java/org/apache/clerezza/utils/imageprocessing/ImageProcessorTest.java?rev=891913&r1=891912&r2=891913&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/test/java/org/apache/clerezza/utils/imageprocessing/ImageProcessorTest.java (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imageprocessing/src/test/java/org/apache/clerezza/utils/imageprocessing/ImageProcessorTest.java Thu Dec 17 21:21:04 2009
@@ -86,12 +86,14 @@
public void testMakeAThumbnail() throws IOException {
BufferedImage tempImg = processor.makeAThumbnail(bimg, 50, 70);
Assert.assertTrue(50 == tempImg.getWidth()||70 == tempImg.getHeight());
+ Assert.assertTrue(tempImg.getWidth() <= 50 && tempImg.getHeight() <= 70);
bimg = ImageIO.read(new File(getClass().getResource("testimage1.jpg").getPath()));
tempImg = processor.makeAThumbnail(bimg, 50, 70);
Assert.assertTrue(50 == tempImg.getWidth()||70 == tempImg.getHeight());
+ Assert.assertTrue(tempImg.getWidth() <= 50 && tempImg.getHeight() <= 70);
bimg = ImageIO.read(new File(getClass().getResource("testimage2.jpg").getPath()));
tempImg = processor.makeAThumbnail(bimg, 50, 70);
Assert.assertTrue(50 == tempImg.getWidth()||70 == tempImg.getHeight());
-
+ Assert.assertTrue(tempImg.getWidth() <= 50 && tempImg.getHeight() <= 70);
}
}