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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs