Author: michiel Date: 2010-02-08 18:43:37 +0100 (Mon, 08 Feb 2010) New Revision: 40913
Modified: mmbase/trunk/applications/resources/src/main/java/org/mmbase/util/images/ImageMagickImageConverter.java mmbase/trunk/applications/resources/src/test/java/org/mmbase/util/images/ImageMagickImageConverterTest.java Log: MMB-1906 Modified: mmbase/trunk/applications/resources/src/main/java/org/mmbase/util/images/ImageMagickImageConverter.java =================================================================== --- mmbase/trunk/applications/resources/src/main/java/org/mmbase/util/images/ImageMagickImageConverter.java 2010-02-08 17:30:21 UTC (rev 40912) +++ mmbase/trunk/applications/resources/src/main/java/org/mmbase/util/images/ImageMagickImageConverter.java 2010-02-08 17:43:37 UTC (rev 40913) @@ -30,9 +30,11 @@ public class ImageMagickImageConverter extends AbstractImageConverter implements ImageConverter { private static final Logger log = Logging.getLoggerInstance(ImageMagickImageConverter.class); - static final Pattern IM_VERSION_PATTERN = Pattern.compile("(?is).*?\\s(\\d+)\\.(\\d+)\\.(\\d+)(-[0-9]+)?\\s.*"); + static final Pattern IM_VERSION_PATTERN = Pattern.compile("(?is)(.*)\\s(\\d+)\\.(\\d+)\\.(\\d+)(-[0-9]+)?\\s.*"); private static final Pattern IM_FORMAT_PATTERN = Pattern.compile("(?is)\\s*([A-Z0-9]+)\\*?\\s+[A-Z0-9]*\\s*[r\\-]w[\\+\\-]\\s+.*"); + + private String program = "ImageMagick"; private int imVersionMajor = 5; private int imVersionMinor = 5; private int imVersionPatch = 0; @@ -217,10 +219,19 @@ String imOutput = getOutput("-version").toString(); Matcher m = IM_VERSION_PATTERN.matcher(imOutput); if (m.matches()) { - imVersionMajor = Integer.parseInt(m.group(1)); - imVersionMinor = Integer.parseInt(m.group(2)); - imVersionPatch = Integer.parseInt(m.group(3)); - log.service("Found ImageMagick version " + imVersionMajor + "." + imVersionMinor + "." + imVersionPatch); + String program = m.group(1); + imVersionMajor = Integer.parseInt(m.group(2)); + imVersionMinor = Integer.parseInt(m.group(3)); + imVersionPatch = Integer.parseInt(m.group(4)); + if (program.indexOf("GraphicsMagick") >= 0) { + log.service("Found GraphicsMagick version " + imVersionMajor + "." + imVersionMinor + "." + imVersionPatch); + imVersionMajor += 5; // I have no freaking idea + log.service("Supposing that that is equivalent to ImageMagick version " + imVersionMajor + "." + imVersionMinor + "." + imVersionPatch); + program = "GraphicsMagick"; + } else { + log.service("Found ImageMagick version " + imVersionMajor + "." + imVersionMinor + "." + imVersionPatch); + } + } else { log.error( "converter from location " + converterPath + ", gave strange result: " + imOutput + "conv.root='" + converterRoot + "' conv.command='" + converterCommand + "'. (Doesn't match " + IM_VERSION_PATTERN + ")"); @@ -262,7 +273,7 @@ } else { log.debug("ModulateScaleBase property not found, ignoring the modulateScaleBase."); } - log.info("Found ImageMagick supported formats " + validFormats + ". Using " + this); + log.info("Found " + program + " supported formats " + validFormats + ". Using " + this); } private static class ParseResult { @@ -282,11 +293,11 @@ */ public boolean isMinimumVersion(int major, int minor, int patch) { return (imVersionMajor > major) || - ((imVersionMajor == major) && - ((imVersionMinor > minor) || + ((imVersionMajor == major) && + ((imVersionMinor > minor) || ((imVersionMinor == minor) && (imVersionPatch >= patch)) ) - ); + ); } /** @@ -499,11 +510,11 @@ new File( org.mmbase.module.core.MMBaseContext.getConfigPath(),"fonts"); if (fontDir.isDirectory()) { if (log.isDebugEnabled()) { - log.debug("Using " + fontDir + " as working dir for conversion. A 'type.mgk' (see ImageMagick documentation) can be in this dir to define fonts"); + log.debug("Using " + fontDir + " as working dir for conversion. A 'type.mgk' (see " + program + " documentation) can be in this dir to define fonts"); } result.cwd = fontDir; } else { - log.debug("Using named font without MMBase 'fonts' directory, using ImageMagick defaults only"); + log.debug("Using named font without MMBase 'fonts' directory, using " + program + " defaults only"); } } Modified: mmbase/trunk/applications/resources/src/test/java/org/mmbase/util/images/ImageMagickImageConverterTest.java =================================================================== --- mmbase/trunk/applications/resources/src/test/java/org/mmbase/util/images/ImageMagickImageConverterTest.java 2010-02-08 17:30:21 UTC (rev 40912) +++ mmbase/trunk/applications/resources/src/test/java/org/mmbase/util/images/ImageMagickImageConverterTest.java 2010-02-08 17:43:37 UTC (rev 40913) @@ -31,15 +31,16 @@ public void imageMagickVersion(String version, int major, int minor, int patch) { Matcher m = ImageMagickImageConverter.IM_VERSION_PATTERN.matcher(version); assert(m.matches()); - assertEquals(major, Integer.parseInt(m.group(1))); - assertEquals(minor, Integer.parseInt(m.group(2))); - assertEquals(patch, Integer.parseInt(m.group(3))); + assertEquals(major, Integer.parseInt(m.group(2))); + assertEquals(minor, Integer.parseInt(m.group(3))); + assertEquals(patch, Integer.parseInt(m.group(4))); } @Test public void imageMagickVersion() throws IOException { imageMagickVersion("Version: ImageMagick 6.3.7 03/20/08 Q16 http://www.imagemagick.org", 6, 3, 7); imageMagickVersion("Version: ImageMagick 6.5.1-0 2009-08-27 Q16 OpenMP http://www.imagemagick.org", 6, 5, 1); + imageMagickVersion("GraphicsMagick 1.1.11 2008-02-23 Q8 http://www.GraphicsMagick.org/", 1, 1, 11); // will be supposed to be like 6.1.11 (See MMB-1906) } } _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs