Author: mir
Date: Tue Aug 17 12:25:28 2010
New Revision: 986292

URL: http://svn.apache.org/viewvc?rev=986292&view=rev
Log:
CLEREZZA-265: reverted everything

Removed:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.ext.org.im4java/
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/test/resources/org/apache/clerezza/utils/imagemagick/rocket.jpg
Modified:
    
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.imagemagick/src/test/java/org/apache/clerezza/utils/imagemagick/ImageMagickUtilsTest.java
    incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml

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=986292&r1=986291&r2=986292&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
 Tue Aug 17 12:25:28 2010
@@ -38,14 +38,5 @@
                        <groupId>org.apache.felix</groupId>
                        
<artifactId>org.apache.felix.scr.annotations</artifactId>
                </dependency>
-               <dependency>
-                       <groupId>org.apache.clerezza.ext</groupId>
-                       <artifactId>org.im4java</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.im4java</groupId>
-                       <artifactId>org.im4java</artifactId>
-                       <version>1.1.0</version>
-               </dependency>
        </dependencies>
-</project>
+</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=986292&r1=986291&r2=986292&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
 Tue Aug 17 12:25:28 2010
@@ -36,6 +36,7 @@ import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.imageio.ImageIO;
 
 import org.osgi.service.component.ComponentContext;
 import org.slf4j.Logger;
@@ -54,9 +55,6 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.Service;
 import org.apache.felix.scr.annotations.Services;
-import org.im4java.core.ConvertCmd;
-import org.im4java.core.IMOperation;
-import org.im4java.core.Stream2BufferedImage;
 
 /**
  * This class implements interfaces that execute system calls to imageMagick.
@@ -75,9 +73,9 @@ import org.im4java.core.Stream2BufferedI
        @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=3, description="Specifies 
ImageMagick version number (Syntax: 
release.version.majorRevision-minorRevision)."),
-       @Property(name="major_release_number", intValue=7, 
description="Specifies ImageMagick major revision number (Syntax: 
release.version.majorRevision-minorRevision)."),
-       @Property(name="minor_release_number", intValue=9, 
description="Specifies ImageMagick minor revision 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")
        })
 @Services({
@@ -89,13 +87,35 @@ public class ImageMagickProvider extends
 
        private String convert = "convert";
        private String identify = "identify";
-
+       private int imagemagickRelease = 6;
+       private int imagemagickVersion = 5;
+       private int imagemagickRevisionMajorNumber = 2;
+       private int imagemagickRevisionMinorNumber = 10;
 
        @Reference
        private Serializer serializer;
 
        private final Logger logger = LoggerFactory.getLogger(getClass());
 
+       protected void activate(ComponentContext cCtx) {
+               if (cCtx != null) {
+                       convert = (String) cCtx.getProperties().get("convert");
+                       identify = (String) 
cCtx.getProperties().get("identify");
+                       imagemagickRelease = (Integer) cCtx.getProperties().
+                               get("release_number");
+                       imagemagickVersion = (Integer) cCtx.getProperties().
+                               get("version_number");
+                       imagemagickRevisionMajorNumber = (Integer) 
cCtx.getProperties().
+                               get("major_release_number");
+                       imagemagickRevisionMinorNumber = (Integer) 
cCtx.getProperties().
+                               get("minor_release_number");
+               }
+               
+               checkImageMagickInstallation();
+               
+               logger.info("ImageMagickProvider activated");
+       }
+
        /**
         * Default Constructor
         */
@@ -118,17 +138,22 @@ public class ImageMagickProvider extends
                try {
                        List<String> command = new ArrayList<String>();
                        command.add(identify);
-                       command.add("-version");
+                       command.add("--version");
                        Process proc = execCommand(command);
                        
                        BufferedReader br = new BufferedReader(
                                        new 
InputStreamReader(proc.getInputStream()));
                        String output = br.readLine();
                        br.close();
-                                       
+                       
+                       ok = checkImageMagickVersion(output, 
imagemagickRelease, 
+                                                               
imagemagickVersion, 
+                                                               
imagemagickRevisionMajorNumber, 
+                                                               
imagemagickRevisionMinorNumber);
+                       
                        command.clear();
                        command.add(convert);
-                       command.add("-version");
+                       command.add("--version");
                        proc = execCommand(command);
                        
                        br = new BufferedReader(new 
InputStreamReader(proc.getInputStream()));
@@ -137,7 +162,8 @@ public class ImageMagickProvider extends
                        
                        if(output!=null && !output.contains("Version: 
ImageMagick")) {
                                ok = false;
-                       }                       
+                       }
+                       
                        
                } catch (InterruptedException ex) {
                        Thread.currentThread().interrupt();
@@ -153,10 +179,49 @@ public class ImageMagickProvider extends
                }
                
                if(!ok) {
+                       logger.error("ImageMagick version can not be verified. 
" +
+                       "Please make sure you have ImageMagick (>=" +
+                       imagemagickRelease + "." + imagemagickVersion + "." +
+                       imagemagickRevisionMajorNumber + "-" + 
+                       imagemagickRevisionMinorNumber +
+                       ") installed correctly");
+                       
                        throw new RuntimeException("ImageMagick not installed 
correctly.");
                }
        }
 
+       private boolean checkImageMagickVersion(String str, int release, int 
version,
+                       int revision_major_number, int revision_minor_number) {
+
+               Pattern pattern = Pattern.compile("(\\d+\\.){2}\\d+-\\d+");
+               Matcher matcher = pattern.matcher(str);
+
+               boolean error = false;
+               if (matcher.find()) {
+                       String versionString = matcher.group();
+                       String[] versionParts = versionString.split("\\.");
+                       if (Integer.parseInt(versionParts[0]) < release) {
+                               error = true;
+                       } else if (Integer.parseInt(versionParts[0]) == 
release) {
+                               if (Integer.parseInt(versionParts[1]) < 
version) {
+                                       error = true;
+                               } else if (Integer.parseInt(versionParts[1]) == 
version) {
+                                       String[] revisionParts = 
versionParts[2].split("-");
+                                       if (Integer.parseInt(revisionParts[0]) 
< revision_major_number) {
+                                               error = true;
+                                       } else if 
(Integer.parseInt(revisionParts[0]) == revision_major_number) {
+                                               if 
(Integer.parseInt(revisionParts[1]) < revision_minor_number) {
+                                                       error = true;
+                                               }
+                                       }
+                               }
+                       }
+                       return !error;
+               } else {
+                       return false;
+               }
+       }
+
        @Override
        public BufferedImage makeImageTranslucent(BufferedImage image,
                        float translucency) {
@@ -170,76 +235,86 @@ public class ImageMagickProvider extends
 
        @Override
        public BufferedImage flip(BufferedImage image, int direction) {
-               IMOperation op = new IMOperation();
+               List<String> command = new ArrayList<String>(10);
+               command.add(convert);
                if (direction == 0) {
-                       op.flop();
+                       command.add("-flop");
                } else {
-                       op.flip();
+                       command.add("-flip");
                }
-               return processImage(op, image);
+
+               return processImage(command, 100, image);
        }
 
        @Override
        public BufferedImage rotate(BufferedImage image, int angle) {
-               IMOperation op = new IMOperation();
-               op.rotate(Double.valueOf(angle));
-               return processImage(op, image);
+               List<String> command = new ArrayList<String>(10);
+               command.add(convert);
+               command.add("-rotate");
+               command.add("" + angle);
+
+               return processImage(command, 100, image);
        }
 
        @Override
        public BufferedImage resize(BufferedImage image, int newWidth, int 
newHeight) {
-               IMOperation op = new IMOperation();
-               op.resize(newWidth == 0 ? null : newWidth, newHeight == 0 ? 
null : newHeight, "!");
-               return processImage(op, image);
+               List<String> command = new ArrayList<String>(10);
+               command.add(convert);
+               command.add("-geometry");
+               command.add(newWidth + "x" + newHeight + "!");
+
+               return processImage(command, 100, image);
        }
 
        @Override
        public BufferedImage resizeProportional(BufferedImage image, int 
newWidth,
                        int newHeight) {
-               IMOperation op = new IMOperation();
-               op.resize(newWidth == 0 ? null : newWidth, newWidth !=0 || 
newHeight == 0  ? null : newHeight);
-               return processImage(op, image);
+               List<String> command = new ArrayList<String>(10);
+               command.add(convert);
+               command.add("-geometry");
+               if (newWidth != 0) {
+                       command.add("" + newWidth);
+               } else {
+                       if (newHeight != 0) {
+                               command.add("x" + newHeight);
+                       } else {
+                               return image;
+                       }
+               }
+
+               return processImage(command, 100, image);
        }
 
        @Override
        public BufferedImage resizeRelative(BufferedImage image,
                        float resizeFactorWidth, float resizeFactorHeight) {
-               IMOperation op = new IMOperation();
-               Integer newWidth = Float.valueOf(image.getWidth() * 
resizeFactorWidth).intValue();
-               Integer newHeight = Float.valueOf(image.getHeight() * 
resizeFactorHeight).intValue();
-               op.resize(newWidth, newHeight, "!");
-               return processImage(op, image);
+               List<String> command = new ArrayList<String>(10);
+               command.add(convert);
+               command.add("-geometry");
+               command.add((100 * resizeFactorWidth) + "%x"
+                               + (100 * resizeFactorHeight) + "%");
+
+               return processImage(command, 100, image);
        }
 
        @Override
        public BufferedImage resizeRelativeProportional(BufferedImage image,
                        float resizeFactor) {
-               IMOperation op = new IMOperation();             
-               Integer width = Float.valueOf(image.getWidth() * 
resizeFactor).intValue();
-               op.resize(width);
-               return processImage(op, image);
-       }
+               List<String> command = new ArrayList<String>(10);
+               command.add(convert);
+               command.add("-geometry");
+               command.add(100 * resizeFactor + "%");
 
-       @Override
-       public BufferedImage makeAThumbnail(BufferedImage image, int width, int 
height) {
-               IMOperation op = new IMOperation();
-               op.thumbnail(width, height);
-               return processImage(op, image);
+               return processImage(command, 100, image);
        }
 
-       private BufferedImage processImage(IMOperation ops, BufferedImage 
image) {
-               ConvertCmd convertCmd = new ConvertCmd();
-               ops.addImage();
-               ops.addImage("jpg:-");
-               Stream2BufferedImage s2b = new Stream2BufferedImage();
-               convertCmd.setOutputConsumer(s2b);
-               try {
-                       convertCmd.run(ops, image);
-               } catch(Exception ex) {
-                       throw new RuntimeException(ex);
-               }
-               BufferedImage img = s2b.getImage();
-               return img;
+       private BufferedImage crop(BufferedImage image, int newWidth, int 
newHeight) {
+               List<String> command = new ArrayList<String>(10);
+               command.add(convert);
+               command.add("-crop");
+               command.add(newWidth + "x" + newHeight);
+
+               return processImage(command, 100, image);
        }
 
        @Override
@@ -473,6 +548,35 @@ public class ImageMagickProvider extends
                return null;
        }
 
+       
+       
+       private BufferedImage processImage(List<String> command, int quality,
+                       BufferedImage image) {
+               command.add("-quality");
+               command.add(String.valueOf(quality));
+               command.add("-");
+               command.add("-");
+               
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+               try {
+                       if (ImageIO.write(image, "png", baos) == false) {
+                               logger.warn("Cannot write image to output 
stream");
+                               return null;
+                       }
+
+                       return ImageIO.read(execCommand(command, 
baos.toByteArray()).
+                                       getInputStream());
+                       
+               } catch (InterruptedException ex) {
+                       logger.warn("ImageMagick has been interrupted");
+                       Thread.currentThread().interrupt();
+                       return null;
+               } catch (IOException ex) {
+                       logger.warn("IOException while trying to execute {}", 
command);
+                       return null;
+               }
+       }
+
        private Process execCommand(List<String> command,
                        byte[]... inputData) throws IOException,
                        InterruptedException {

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/test/java/org/apache/clerezza/utils/imagemagick/ImageMagickUtilsTest.java
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/test/java/org/apache/clerezza/utils/imagemagick/ImageMagickUtilsTest.java?rev=986292&r1=986291&r2=986292&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/test/java/org/apache/clerezza/utils/imagemagick/ImageMagickUtilsTest.java
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.utils.imagemagick/src/test/java/org/apache/clerezza/utils/imagemagick/ImageMagickUtilsTest.java
 Tue Aug 17 12:25:28 2010
@@ -70,67 +70,6 @@ public class ImageMagickUtilsTest {
                BufferedImage bimg = ip.flip(ImageIO.read(in), 0);
                assert(bimg != null);
        }
-
-       @Test
-       public void resizeProportionalTest() throws IOException {
-               Assume.assumeTrue(correctlyInstalled);
-               ImageMagickProvider ip = new ImageMagickProvider();
-               BufferedImage inputImage = ImageIO.read(
-                               getClass().getResourceAsStream("rocket.jpg"));
-               BufferedImage outputImage = ip.resizeProportional(inputImage, 
200, 200);
-               assert(outputImage != null);
-               Assert.assertEquals(200, outputImage.getWidth());
-               Assert.assertEquals(250, outputImage.getHeight());
-       }
-
-       @Test
-       public void resizeTest() throws IOException {
-               Assume.assumeTrue(correctlyInstalled);
-               ImageMagickProvider ip = new ImageMagickProvider();
-               BufferedImage inputImage = ImageIO.read(
-                               getClass().getResourceAsStream("rocket.jpg"));
-               BufferedImage outputImage = ip.resize(inputImage, 200, 200);
-               assert(outputImage != null);
-               Assert.assertEquals(200, outputImage.getHeight());
-               Assert.assertEquals(200, outputImage.getWidth());
-       }
-
-       @Test
-       public void resizeRelativeProportionalTest() throws IOException {
-               Assume.assumeTrue(correctlyInstalled);
-               ImageMagickProvider ip = new ImageMagickProvider();
-               BufferedImage inputImage = ImageIO.read(
-                               getClass().getResourceAsStream("rocket.jpg"));
-               BufferedImage outputImage = 
ip.resizeRelativeProportional(inputImage, Float.valueOf(".5"));
-               assert(outputImage != null);
-               Assert.assertEquals(inputImage.getWidth() / 2, 
outputImage.getWidth());
-               Assert.assertEquals(inputImage.getHeight() / 2, 
outputImage.getHeight());
-       }
-       
-       @Test
-       public void resizeRelativeTest() throws IOException {
-               Assume.assumeTrue(correctlyInstalled);
-               ImageMagickProvider ip = new ImageMagickProvider();
-               BufferedImage inputImage = ImageIO.read(
-                               getClass().getResourceAsStream("rocket.jpg"));
-               BufferedImage outputImage = ip.resizeRelative(inputImage, 
Float.valueOf(".5"), 
-                               Float.valueOf(".25"));
-               assert(outputImage != null);
-               Assert.assertEquals(inputImage.getHeight() / 4, 
outputImage.getHeight());
-               Assert.assertEquals(inputImage.getWidth() / 2, 
outputImage.getWidth());
-       }
-
-       @Test
-       public void thumbnailTest() throws IOException {
-               Assume.assumeTrue(correctlyInstalled);
-               ImageMagickProvider ip = new ImageMagickProvider();
-               BufferedImage inputImage = ImageIO.read(
-                               getClass().getResourceAsStream("rocket.jpg"));
-               BufferedImage outputImage = ip.makeAThumbnail(inputImage, 200, 
200);
-               Assert.assertEquals(200, outputImage.getHeight());
-               Assert.assertEquals(160, outputImage.getWidth());
-               assert(outputImage != null);
-       }
        
        @Test
        public void extractMetaDataTest() throws IOException {

Modified: incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml?rev=986292&r1=986291&r2=986292&view=diff
==============================================================================
--- incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml (original)
+++ incubator/clerezza/trunk/org.apache.clerezza.parent/pom.xml Tue Aug 17 
12:25:28 2010
@@ -23,7 +23,6 @@
                <module>org.apache.clerezza.ext.com.hp.hpl.jena</module>
                <module>org.apache.clerezza.ext.com.hp.hpl.jena.tdb</module>
                <module>org.apache.clerezza.ext.com.ibm.icu</module>
-               <module>org.apache.clerezza.ext.org.im4java</module>
                <module>org.apache.clerezza.ext.javax.mail</module>
                <module>org.apache.clerezza.ext.org.jruby</module>
                <module>org.apache.clerezza.ext.org.json.simple</module>
@@ -560,11 +559,6 @@
                                <version>0.5-incubating-SNAPSHOT</version>
                        </dependency>
                        <dependency>
-                               <groupId>org.apache.clerezza.ext</groupId>
-                               <artifactId>org.im4java</artifactId>
-                               <version>0.1-incubating-SNAPSHOT</version>
-                       </dependency>
-                       <dependency>
                                <groupId>org.apache.clerezza</groupId>
                                
<artifactId>org.apache.clerezza.rdf.utils</artifactId>
                                <version>0.13-incubating-SNAPSHOT</version>


Reply via email to