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);
 	}
 }