From 243e646f7ce06b27974e5754f8895237a9bbd9df Mon Sep 17 00:00:00 2001
From: Matthai Kurian <matthai.kurian@frentix.com>
Date: Mon, 13 Aug 2012 13:50:07 +0200
Subject: [PATCH] OO-326: ImageMagick verbose output also from stderr

---
 .../util/image/spi/ImageMagickHelper.java     | 37 ++++++++++++-------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/src/main/java/org/olat/core/util/image/spi/ImageMagickHelper.java b/src/main/java/org/olat/core/util/image/spi/ImageMagickHelper.java
index 8619c124dc5..9d8cd3dd21a 100644
--- a/src/main/java/org/olat/core/util/image/spi/ImageMagickHelper.java
+++ b/src/main/java/org/olat/core/util/image/spi/ImageMagickHelper.java
@@ -153,23 +153,28 @@ public class ImageMagickHelper extends BasicManager implements ImageHelperSPI {
 	
 	private final FinalSize executeProcess(File thumbnailFile, Process proc) {
 
-		InputStream stderr = proc.getErrorStream();
-		InputStreamReader iserr = new InputStreamReader(stderr);
-		BufferedReader berr = new BufferedReader(iserr);
-		String l = null;
+		FinalSize rv = null;
 		StringBuilder errors = new StringBuilder();
 		StringBuilder output = new StringBuilder();
+		String line;
 
+		InputStream stderr = proc.getErrorStream();
+		InputStreamReader iserr = new InputStreamReader(stderr);
+		BufferedReader berr = new BufferedReader(iserr);
+		line = null;
 		try {
-			while ((l = berr.readLine()) != null) {
-				errors.append(l);
+			while ((line = berr.readLine()) != null) {
+				errors.append(line);
 			}
-
-			InputStream stdout = proc.getInputStream();
-			InputStreamReader isr = new InputStreamReader(stdout);
-			BufferedReader br = new BufferedReader(isr);
-			String line = null;
-
+		} catch (IOException e) {
+			//
+		}
+		
+		InputStream stdout = proc.getInputStream();
+		InputStreamReader isr = new InputStreamReader(stdout);
+		BufferedReader br = new BufferedReader(isr);
+		line = null;
+		try {
 			while ((line = br.readLine()) != null) {
 				output.append(line);
 			}
@@ -185,13 +190,17 @@ public class ImageMagickHelper extends BasicManager implements ImageHelperSPI {
 		try {
 			int exitValue = proc.waitFor();
 			if (exitValue == 0) {
-				return extractSizeFromOutput(thumbnailFile, output);
+				rv = extractSizeFromOutput(thumbnailFile, output);
+				if (rv == null) {
+					// sometimes verbose info of convert is in stderr
+					rv = extractSizeFromOutput(thumbnailFile, errors);
+				}
 			}
 		} catch (InterruptedException e) {
 			//
 		}
 		logWarn("Could not generate thumbnail: "+thumbnailFile, null);
-		return null;
+		return rv;
 	}
 	/**
 	 * Extract informations from the process:<br/>
-- 
GitLab