<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent posts to Discussion</title><link>https://sourceforge.net/p/im4java/discussion/</link><description>Recent posts to Discussion</description><atom:link href="https://sourceforge.net/p/im4java/discussion/feed.rss" rel="self"/><language>en</language><lastBuildDate>Sat, 18 Jul 2020 12:18:14 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/im4java/discussion/feed.rss" rel="self" type="application/rss+xml"/><item><title>How to read multiple output file when using crop for ImageMagick </title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/f1d96c646e/?limit=25#db17</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I am trying a simple example to crop a image into multiple smaller images. Instead of creating the output files on disk (output file) I want to have it in OutputStream. I have tried few ways of doing the same but not successful. Any help will be benificial. Thanks for helping.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;String&lt;/span&gt; &lt;span class="s s-Atom"&gt;imPath=&lt;/span&gt;&lt;span class="s2"&gt;"C:/Program Files/ImageMagick-7.0.10-Q16-HDRI"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;ConvertCmd&lt;/span&gt; &lt;span class="s s-Atom"&gt;cmd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;ConvertCmd&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="s s-Atom"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setSearchPath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;imPath&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;ByteArrayOutputStream&lt;/span&gt; &lt;span class="s s-Atom"&gt;os&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;ByteArrayOutputStream&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nv"&gt;Pipe&lt;/span&gt; &lt;span class="s s-Atom"&gt;pipeOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;Pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s s-Atom"&gt;os&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;      
&lt;span class="nv"&gt;ArrayListOutputConsumer&lt;/span&gt; &lt;span class="s s-Atom"&gt;arrL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;ArrayListOutputConsumer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;I&lt;/span&gt; &lt;span class="s s-Atom"&gt;tried&lt;/span&gt; &lt;span class="s s-Atom"&gt;this&lt;/span&gt; &lt;span class="s s-Atom"&gt;also&lt;/span&gt; &lt;span class="s s-Atom"&gt;in&lt;/span&gt; &lt;span class="s s-Atom"&gt;below&lt;/span&gt; &lt;span class="s s-Atom"&gt;but&lt;/span&gt; &lt;span class="s s-Atom"&gt;to&lt;/span&gt; &lt;span class="s s-Atom"&gt;no&lt;/span&gt; &lt;span class="s s-Atom"&gt;avail&lt;/span&gt;

&lt;span class="s s-Atom"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setOutputConsumer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;pipeOut&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;IMOperation&lt;/span&gt; &lt;span class="s s-Atom"&gt;op&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;IMOperation&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="s s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;crop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="s s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"D:/matterport-sample-schematic-floor-plan/"&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s s-Atom"&gt;fileName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;Input&lt;/span&gt; &lt;span class="s s-Atom"&gt;file&lt;/span&gt;
&lt;span class="s s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"png:-"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="s s-Atom"&gt;output&lt;/span&gt; &lt;span class="s s-Atom"&gt;file&lt;/span&gt;
&lt;span class="s s-Atom"&gt;cmd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nv"&gt;BufferedImage&lt;/span&gt; &lt;span class="s s-Atom"&gt;bImage2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;ImageIO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;ByteArrayInputStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toByteArray&lt;/span&gt;&lt;span class="p"&gt;()));&lt;/span&gt; 
&lt;span class="nv"&gt;ImageIO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s s-Atom"&gt;bImage2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;File&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"D://matterport-sample-schematic-floor-plan/layered.png"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="nv"&gt;This&lt;/span&gt; &lt;span class="s s-Atom"&gt;writes&lt;/span&gt; &lt;span class="s s-Atom"&gt;only&lt;/span&gt; &lt;span class="s s-Atom"&gt;one&lt;/span&gt; &lt;span class="s s-Atom"&gt;output&lt;/span&gt; &lt;span class="s s-Atom"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; 
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Please note if i don't use Pipe (cmd.setOutputConsumer(pipeOut)) and put op.addImage() all cropped images are created on disk.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">DEVENDRA SINGH RAWAT</dc:creator><pubDate>Sat, 18 Jul 2020 12:18:14 -0000</pubDate><guid>https://sourceforge.netf0178f3a2c33b81445e91fb937fc0510050f580f</guid></item><item><title>compare.run not working correctly. It is creating the files to be compared again instead of creating diff file </title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/f19c753d/?limit=25#6cce</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;public static boolean compareImages(String actualImage,&lt;br/&gt;
            String expectedImage, String diffImage) {&lt;br/&gt;
            CompareCmd compare = new CompareCmd();&lt;br/&gt;
            compare.setSearchPath("/usr/local/bin/");&lt;br/&gt;
            ArrayListErrorConsumer errorConsumer = new ArrayListErrorConsumer();&lt;br/&gt;
            compare.setErrorConsumer(errorConsumer); // for metric-output&lt;br/&gt;
            IMOperation cmpOp = new IMOperation();&lt;br/&gt;
            cmpOp.addImage("/Users/moagarwa/Desktop/delete/test/IMG_2188.JPEG");&lt;br/&gt;
            cmpOp.addImage("/Users/moagarwa/Desktop/delete/test/IMG_2193.JPEG");&lt;br/&gt;
//          cmpOp.fuzz(5.0);&lt;br/&gt;
            cmpOp.metric("ae"); // root mean squared (normalized root mean&lt;br/&gt;
            // squared)&lt;br/&gt;
            cmpOp.addImage("/Users/moagarwa/Desktop/delete/DIFF.JPEG");&lt;br/&gt;
            try {&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;            compare.run(cmpOp);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return errorConsumer.getOutput().contains("0 (0)");

        Please help. We are doing mobile automation and we want to use it for image comparison.
        We are completely blocked
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mohit Agarwal</dc:creator><pubDate>Wed, 18 Jul 2018 12:51:19 -0000</pubDate><guid>https://sourceforge.netaff9744d33456799acea6dbb338cf9aa8db346a7</guid></item><item><title>NullPointerException when using CompareCmd via Im4java</title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/3a527be6/?limit=25#a070</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I found the following bug in line 252 of ImageCommand.java there is no check if iErrorText is null:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;protected void finished(int pReturnCode) throws Exception {
    if (pReturnCode &amp;gt; 0) {
      CommandException ce;
      if (iErrorText.size() &amp;gt; 0) { // this line
    ce = new CommandException(iErrorText.get(0));
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I solved it as follows:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;    &lt;span class="nt"&gt;protected&lt;/span&gt; &lt;span class="nt"&gt;void&lt;/span&gt; &lt;span class="nt"&gt;finished&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;int&lt;/span&gt; &lt;span class="nt"&gt;pReturnCode&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;throws&lt;/span&gt; &lt;span class="nt"&gt;Exception&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="err"&gt;if&lt;/span&gt; &lt;span class="err"&gt;(pReturnCode&lt;/span&gt; &lt;span class="err"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;0)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
            &lt;span class="err"&gt;CommandException&lt;/span&gt; &lt;span class="err"&gt;ce&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="err"&gt;if&lt;/span&gt; &lt;span class="err"&gt;(iErrorText&lt;/span&gt; &lt;span class="err"&gt;!=&lt;/span&gt; &lt;span class="err"&gt;null&lt;/span&gt; &lt;span class="err"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="err"&gt;iErrorText.size()&lt;/span&gt; &lt;span class="err"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;0)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
                &lt;span class="err"&gt;ce&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt; &lt;span class="err"&gt;new&lt;/span&gt; &lt;span class="err"&gt;CommandException(String.join(",",&lt;/span&gt; &lt;span class="err"&gt;iErrorText))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="nt"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="err"&gt;ce&lt;/span&gt; &lt;span class="err"&gt;=&lt;/span&gt; &lt;span class="err"&gt;new&lt;/span&gt; &lt;span class="err"&gt;CommandException("return&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="err"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;pReturnCode&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nt"&gt;ce&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;setErrorText&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;iErrorText&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nt"&gt;ce&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;setReturnCode&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;pReturnCode&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nt"&gt;throw&lt;/span&gt; &lt;span class="nt"&gt;ce&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
        &lt;span class="err"&gt;}&lt;/span&gt; &lt;span class="nt"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="err"&gt;removeTmpFiles()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="err"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;You can integrate this solution into your library?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">gabriele favaretto</dc:creator><pubDate>Tue, 24 Oct 2017 11:34:15 -0000</pubDate><guid>https://sourceforge.net908d2cc0682d6e4ccc61bb30f7b59d599f546b89</guid></item><item><title>Convert Operation Hangs on Specific Image</title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/09bd86e3/?limit=25#47da</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi Bernard,&lt;/p&gt;
&lt;p&gt;Thanks for the quick reply. &lt;/p&gt;
&lt;p&gt;So we kept digging deeper and a coworker found that if she did the following, it worked.&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;                &lt;span class="n"&gt;ConvertCmd&lt;/span&gt; &lt;span class="n"&gt;cmd&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;ConvertCmd&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
                &lt;span class="n"&gt;String&lt;/span&gt; &lt;span class="n"&gt;enginePath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"C:\\Program Files\\ImageMagick-7.0.5-Q16"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
                &lt;span class="c1"&gt;// create the operation, add images and operators/options&lt;/span&gt;
                &lt;span class="n"&gt;IMOperation&lt;/span&gt; &lt;span class="n"&gt;op&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;IMOperation&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
                &lt;span class="n"&gt;op&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addImage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"C:\\WorkStuff\\badOriginal.jpeg"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;op&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;resize&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;op&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;addImage&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"C:\\WorkStuff\\fixedHappy2.jpg"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
                &lt;span class="c1"&gt;// execute the operation&lt;/span&gt;
                &lt;span class="n"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setSearchPath&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;enginePath&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
                &lt;span class="n"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;op&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Moving one step at a time towards the broken code.  We found it was the pipeIn that caused the problem.&lt;/p&gt;
&lt;p&gt;Bernie (lol, hehe) ~ I think I'll go ahead and perhaps try to dig into that errorConsumer.  I can't let that become production code, but if it'll help the open source, I'll dig into it and try to get you some more info. &lt;/p&gt;
&lt;p&gt;As currently our solution is to modify the code to not use the pipe input.  We don't seem to have a use case for why the Pipe object was used and so long as it tests fine without using the pipe, we're going that route. &lt;/p&gt;
&lt;p&gt;&amp;lt;3 im4java and thanks for the reply.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric Manzitti</dc:creator><pubDate>Fri, 22 Sep 2017 19:02:53 -0000</pubDate><guid>https://sourceforge.netedff6c5f9d4ede1a43d0296ac7fe52fa445a7460</guid></item><item><title>Convert Operation Hangs on Specific Image</title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/09bd86e3/?limit=25#383a</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hi Eric,&lt;/p&gt;
&lt;p&gt;this is indeed strange. My first try would be to add an error-consumer. This might be the cause of the hang if the internal buffer for the stderr is not cleared. The output might also give some additional insights. This does not deal with the root-cause of course.&lt;/p&gt;
&lt;p&gt;Bernhard&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bernhard Bablok</dc:creator><pubDate>Fri, 22 Sep 2017 07:18:26 -0000</pubDate><guid>https://sourceforge.net02130503b7940143ecf78f2472769a041724cc3c</guid></item><item><title>Convert Operation Hangs on Specific Image</title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/09bd86e3/?limit=25#251f</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;:::java&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;            &lt;span class="nt"&gt;System&lt;/span&gt;&lt;span class="nc"&gt;.out.println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"We're going to get the image info.  For two images."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
            &lt;span class="nt"&gt;String&lt;/span&gt; &lt;span class="nt"&gt;incomingFileBad&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"C:\\WorkStuff\\badOriginal444.jpeg"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;String&lt;/span&gt; &lt;span class="nt"&gt;incomingFileGood&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"C:\\WorkStuff\\badRandomProp.jpeg"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;String&lt;/span&gt; &lt;span class="nt"&gt;incomingFileNormal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"C:\\WorkStuff\\001.jpg"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;String&lt;/span&gt; &lt;span class="nt"&gt;mimeType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"image/jpg"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;String&lt;/span&gt; &lt;span class="nt"&gt;enginePath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"C:\\Program Files\\ImageMagick-7.0.5-Q16"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;Info&lt;/span&gt; &lt;span class="nt"&gt;imageInfoBad&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;Info&lt;/span&gt; &lt;span class="nt"&gt;imageInfoGood&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;Info&lt;/span&gt; &lt;span class="nt"&gt;imageInfo3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
            &lt;span class="nt"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;//                  imageInfo = new Info (incomingFileBad, true);&lt;br/&gt;
//                  imageInfo2 = new Info (incomingFileGood, true);&lt;br/&gt;
//                  imageInfo3 = new Info (incomingFileNormal, true);&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;                imageInfoBad = new Info (incomingFileBad);
                imageInfoGood = new Info (incomingFileGood);
                imageInfo3 = new Info (incomingFileNormal);                 
            } catch (InfoException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if (imageInfoBad != null) {
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;//                  System.out.println("We made it through the INFO gathering and here it is : " + imageInfo.toString());&lt;br/&gt;
//                  System.out.println("We made it through the INFO gathering and here it is : " + imageInfo2.toString());&lt;br/&gt;
//                  System.out.println("We made it through the INFO gathering and here it is : " + imageInfo3.toString());&lt;br/&gt;
                    System.out.println("Pause");&lt;br/&gt;
                    List&amp;lt;String&amp;gt; listOfDiffs = new ArrayList&amp;lt;String&amp;gt;();&lt;br/&gt;
                    boolean found = false;&lt;br/&gt;
                    Enumeration&amp;lt;String&amp;gt; badNames = imageInfoBad.getPropertyNames();&lt;br/&gt;
                    //Enumeration&amp;lt;String&amp;gt; goodNames = imageInfoGood.getPropertyNames();&lt;br/&gt;
                    int badNamesCounter = 0, goodNamesCounter =0;&lt;br/&gt;
                    while (badNames.hasMoreElements()){&lt;br/&gt;
                        String badFileProperty = badNames.nextElement();&lt;br/&gt;
                        goodNamesCounter =0;&lt;br/&gt;
                        //System.out.println(badFileProperty);&lt;br/&gt;
                        badNamesCounter++;&lt;br/&gt;
                        Enumeration&amp;lt;String&amp;gt; goodNames = imageInfoGood.getPropertyNames();&lt;br/&gt;
                        while (goodNames.hasMoreElements()){                          &lt;br/&gt;
                            String goodFileProperty = goodNames.nextElement();&lt;br/&gt;
                            //System.out.println(goodFileProperty);&lt;br/&gt;
                            goodNamesCounter++;&lt;br/&gt;
                            if (goodFileProperty.equals(badFileProperty)) {&lt;br/&gt;
                                found = true;                             &lt;br/&gt;
                            }&lt;br/&gt;
                        }&lt;br/&gt;
                        if (!found) {&lt;br/&gt;
                            listOfDiffs.add(badFileProperty);                         &lt;br/&gt;
                        }&lt;br/&gt;
                        found = false;                    &lt;br/&gt;
                    }&lt;br/&gt;
                    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");&lt;br/&gt;
                    System.out.println("There were " + badNamesCounter + " bad image properties");&lt;br/&gt;
                    System.out.println("There were " + goodNamesCounter + " good image properties");&lt;br/&gt;
                    System.out.println("There were " + listOfDiffs.size() + " differences in good/bad properties");&lt;br/&gt;
                    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");&lt;br/&gt;
                    if (listOfDiffs.size() &amp;gt; 0) {&lt;br/&gt;
                        for(String entry : listOfDiffs) {&lt;br/&gt;
                            System.out.println("Differing Property: " + entry);&lt;br/&gt;
                        }&lt;br/&gt;
                    } else {&lt;br/&gt;
                        System.out.println("No differing properties...");&lt;br/&gt;
                    }&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;            }
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;That produces the following output: &lt;br/&gt;
 ``&lt;br/&gt;
 We're going to get the image info.  For two images.&lt;br/&gt;
Pause&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;There were 151 bad image properties
There were 155 good image properties
There were 1 differences in good/bad properties
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Differing Property: Properties:exif:Artist:exif:Copyright:exif:Flash&lt;br/&gt;
''&lt;/p&gt;
&lt;p&gt;Now the difference betweent he two images is one is the bad image and one is that same image simply resaved (meaning It'll work)&lt;/p&gt;
&lt;p&gt;So digging deeper here, it looks like perhaps that property causing image magik to get mad...&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric Manzitti</dc:creator><pubDate>Thu, 21 Sep 2017 19:37:01 -0000</pubDate><guid>https://sourceforge.net46c604b45b60430f26a95d584224495cefc9695a</guid></item><item><title>Convert Operation Hangs on Specific Image</title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/09bd86e3/?limit=25#47f2</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Oh sorry, here is the image file in question. &lt;/p&gt;
&lt;p&gt;And a link to it: &lt;/p&gt;
&lt;p&gt;&lt;a href="https://drive.google.com/open?id=0B-9pALoPVAUeMmU1RWdpdVJvdkE" rel="nofollow"&gt;https://drive.google.com/open?id=0B-9pALoPVAUeMmU1RWdpdVJvdkE&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric Manzitti</dc:creator><pubDate>Thu, 21 Sep 2017 14:55:24 -0000</pubDate><guid>https://sourceforge.netdbf5ac4d4ea8b5f2e2170058009c24337283e3e2</guid></item><item><title>Convert Operation Hangs on Specific Image</title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/09bd86e3/?limit=25#79ac</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Hello.  I have an instance where a specific image file is causing the convert.exe to hang.  However when I run the same command through either the command line in Windows, or through a runtime execution inside java, the operation complets successfully.&lt;/p&gt;
&lt;p&gt;The below code should indicate, I hope, that I am performing the same operation (in a local environment) between the im4java interface and the command line.&lt;/p&gt;
&lt;p&gt;Super weird.  I've tried an assortment of different commands in im4java, nothing seems to matter.  Even just tried to 'resave' it.&lt;/p&gt;
&lt;p&gt;Speaking of resaving.  Whenever I modify the image in anyway, even a simple resaving, it then clears up whatever is wrong with the image and the im4java interface deals with it just fine.&lt;/p&gt;
&lt;p&gt;Can anyone reproduce the hanging below?  We first found this to be happening in our prod environment on a linux box.&lt;/p&gt;
&lt;p&gt;Anyone happen to know or have an idea how I could try to detect the problem aspect(s) of this image before I send it to image magik through im4java?  That way we dont have hanging threads out there?&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;            &lt;span class="s-Atom"&gt;boolean&lt;/span&gt; &lt;span class="s-Atom"&gt;runImageTest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
            &lt;span class="nv"&gt;String&lt;/span&gt; &lt;span class="s-Atom"&gt;domainName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"google.com"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nv"&gt;String&lt;/span&gt; &lt;span class="s-Atom"&gt;command&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;C&lt;/span&gt;&lt;span class="s-Atom"&gt;:\\&lt;/span&gt;&lt;span class="nv"&gt;Program&lt;/span&gt; &lt;span class="nv"&gt;Files&lt;/span&gt;&lt;span class="s-Atom"&gt;\\&lt;/span&gt;&lt;span class="nv"&gt;ImageMagick&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;7.0.5&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;Q16&lt;/span&gt;&lt;span class="s-Atom"&gt;\\convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="s-Atom"&gt;exe&lt;/span&gt; &lt;span class="nv"&gt;C&lt;/span&gt;&lt;span class="s-Atom"&gt;:\\&lt;/span&gt;&lt;span class="nv"&gt;WorkStuff&lt;/span&gt;&lt;span class="s-Atom"&gt;\\badOriginal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="s-Atom"&gt;jpeg&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="s-Atom"&gt;quality&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="nv"&gt;C&lt;/span&gt;&lt;span class="s-Atom"&gt;:\\&lt;/span&gt;&lt;span class="nv"&gt;WorkStuff&lt;/span&gt;&lt;span class="s-Atom"&gt;\\fixedOriginal1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="s-Atom"&gt;jpg&lt;/span&gt;&lt;span class="s2"&gt;";&lt;/span&gt;
&lt;span class="s2"&gt;            StringBuffer output = new StringBuffer();&lt;/span&gt;
&lt;span class="s2"&gt;            Process p;&lt;/span&gt;
&lt;span class="s2"&gt;            try {&lt;/span&gt;
&lt;span class="s2"&gt;                p = Runtime.getRuntime().exec(command);&lt;/span&gt;
&lt;span class="s2"&gt;                p.waitFor();&lt;/span&gt;
&lt;span class="s2"&gt;                BufferedReader reader =&lt;/span&gt;
&lt;span class="s2"&gt;                                new BufferedReader(new InputStreamReader(p.getInputStream()));&lt;/span&gt;

&lt;span class="s2"&gt;                            String line = "";&lt;/span&gt;
&lt;span class="s2"&gt;                while ((line = reader.readLine())!= null) {&lt;/span&gt;
&lt;span class="s2"&gt;                    output.append(line + "&lt;/span&gt;&lt;span class="s-Atom"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;");&lt;/span&gt;
&lt;span class="s2"&gt;                }&lt;/span&gt;

&lt;span class="s2"&gt;            } catch (Exception e) {&lt;/span&gt;
&lt;span class="s2"&gt;                e.printStackTrace();&lt;/span&gt;
&lt;span class="s2"&gt;            }&lt;/span&gt;
&lt;span class="s2"&gt;            System.out.println(output.toString());&lt;/span&gt;

&lt;span class="s2"&gt;            if (runImageTest) {&lt;/span&gt;
&lt;span class="s2"&gt;                System.out.println("&lt;/span&gt;&lt;span class="nv"&gt;We&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="s-Atom"&gt;re&lt;/span&gt; &lt;span class="s-Atom"&gt;going&lt;/span&gt; &lt;span class="s-Atom"&gt;to&lt;/span&gt; &lt;span class="s-Atom"&gt;do&lt;/span&gt; &lt;span class="s-Atom"&gt;some&lt;/span&gt; &lt;span class="s-Atom"&gt;custom&lt;/span&gt; &lt;span class="s-Atom"&gt;arguments&lt;/span&gt;&lt;span class="s2"&gt;");&lt;/span&gt;
&lt;span class="s2"&gt;                String myCommand = "&lt;/span&gt;&lt;span class="s-Atom"&gt;quality&lt;/span&gt;&lt;span class="s2"&gt;";&lt;/span&gt;
&lt;span class="s2"&gt;                String incomingFile = "&lt;/span&gt;&lt;span class="nv"&gt;C&lt;/span&gt;&lt;span class="s-Atom"&gt;:\\&lt;/span&gt;&lt;span class="nv"&gt;WorkStuff&lt;/span&gt;&lt;span class="s-Atom"&gt;\\badOriginal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="s-Atom"&gt;jpg&lt;/span&gt;&lt;span class="s2"&gt;";&lt;/span&gt;
&lt;span class="s2"&gt;                String outgoingFile = "&lt;/span&gt;&lt;span class="nv"&gt;C&lt;/span&gt;&lt;span class="s-Atom"&gt;:\\&lt;/span&gt;&lt;span class="nv"&gt;WorkStuff&lt;/span&gt;&lt;span class="s-Atom"&gt;\\fixedOriginal11&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="s-Atom"&gt;jpg&lt;/span&gt;&lt;span class="s2"&gt;";&lt;/span&gt;
&lt;span class="s2"&gt;                String mimeType = "&lt;/span&gt;&lt;span class="s-Atom"&gt;image&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="s-Atom"&gt;jpg&lt;/span&gt;&lt;span class="s2"&gt;";&lt;/span&gt;
&lt;span class="s2"&gt;                double qualityValue = 05;&lt;/span&gt;
&lt;span class="s2"&gt;                String stylePath = "&lt;/span&gt;&lt;span class="nv"&gt;C&lt;/span&gt;&lt;span class="s-Atom"&gt;:\\&lt;/span&gt;&lt;span class="nv"&gt;WorkStuff&lt;/span&gt;&lt;span class="s-Atom"&gt;\\&lt;/span&gt;&lt;span class="nv"&gt;HMS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="s-Atom"&gt;test&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="s-Atom"&gt;scales&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="s-Atom"&gt;csv&lt;/span&gt;&lt;span class="s2"&gt;";&lt;/span&gt;
&lt;span class="s2"&gt;                String enginePath = "&lt;/span&gt;&lt;span class="nv"&gt;C&lt;/span&gt;&lt;span class="s-Atom"&gt;:\\&lt;/span&gt;&lt;span class="nv"&gt;Program&lt;/span&gt; &lt;span class="nv"&gt;Files&lt;/span&gt;&lt;span class="s-Atom"&gt;\\&lt;/span&gt;&lt;span class="nv"&gt;ImageMagick&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;7.0.5&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;Q16&lt;/span&gt;&lt;span class="s2"&gt;";&lt;/span&gt;
&lt;span class="s2"&gt;                String style = "&lt;/span&gt;&lt;span class="nv"&gt;WIDTH&lt;/span&gt;&lt;span class="s2"&gt;";&lt;/span&gt;

&lt;span class="s2"&gt;                InputStream inputStream = null;&lt;/span&gt;
&lt;span class="s2"&gt;                CreatedFilesList imageReturnObject = null;&lt;/span&gt;
&lt;span class="s2"&gt;                OutputStream outputStream = null;&lt;/span&gt;
&lt;span class="s2"&gt;                try {&lt;/span&gt;
&lt;span class="s2"&gt;                    inputStream = new FileInputStream(incomingFile);&lt;/span&gt;
&lt;span class="s2"&gt;                    outputStream = new FileOutputStream(outgoingFile);&lt;/span&gt;
&lt;span class="s2"&gt;                    IMOperation imOperation = new IMOperation();&lt;/span&gt;
&lt;span class="s2"&gt;                    //imOperation.list("&lt;/span&gt;&lt;span class="s-Atom"&gt;debug&lt;/span&gt;&lt;span class="s2"&gt;");&lt;/span&gt;
&lt;span class="s2"&gt;                    imOperation.addImage(FilenameUtils.getExtension(incomingFile) + "&lt;/span&gt;&lt;span class="p"&gt;:-&lt;/span&gt;&lt;span class="s2"&gt;");              &lt;/span&gt;
&lt;span class="s2"&gt;                    imOperation.quality(qualityValue);              &lt;/span&gt;
&lt;span class="s2"&gt;                    imOperation.addImage(FilenameUtils.getExtension(outgoingFile) + "&lt;/span&gt;&lt;span class="p"&gt;:-&lt;/span&gt;&lt;span class="s2"&gt;");&lt;/span&gt;

&lt;span class="s2"&gt;                    Pipe pipeIn = new Pipe(inputStream, null);&lt;/span&gt;
&lt;span class="s2"&gt;                    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();&lt;/span&gt;
&lt;span class="s2"&gt;                    Pipe pipeOut = new Pipe(null, byteArrayOutputStream);&lt;/span&gt;
&lt;span class="s2"&gt;                    ConvertCmd convertCmd = new ConvertCmd();&lt;/span&gt;
&lt;span class="s2"&gt;                    convertCmd.setInputProvider(pipeIn);&lt;/span&gt;
&lt;span class="s2"&gt;                    convertCmd.setOutputConsumer(pipeOut);&lt;/span&gt;
&lt;span class="s2"&gt;                    convertCmd.setSearchPath(enginePath);&lt;/span&gt;
&lt;span class="s2"&gt;                    System.out.println("&lt;/span&gt;&lt;span class="nv"&gt;We&lt;/span&gt; &lt;span class="s-Atom"&gt;are&lt;/span&gt; &lt;span class="s-Atom"&gt;about&lt;/span&gt; &lt;span class="s-Atom"&gt;to&lt;/span&gt; &lt;span class="s-Atom"&gt;start&lt;/span&gt; &lt;span class="s-Atom"&gt;the&lt;/span&gt; &lt;span class="s-Atom"&gt;operation&lt;/span&gt;&lt;span class="s2"&gt;");&lt;/span&gt;
&lt;span class="s2"&gt;                    convertCmd.run(imOperation);&lt;/span&gt;
&lt;span class="s2"&gt;                    outputStream.write(byteArrayOutputStream.toByteArray());&lt;/span&gt;
&lt;span class="s2"&gt;                } catch (Exception e) {&lt;/span&gt;
&lt;span class="s2"&gt;                    e.printStackTrace();&lt;/span&gt;
&lt;span class="s2"&gt;                } finally {&lt;/span&gt;
&lt;span class="s2"&gt;                    outputStream.close();&lt;/span&gt;
&lt;span class="s2"&gt;                    inputStream.close();&lt;/span&gt;
&lt;span class="s2"&gt;                }&lt;/span&gt;
&lt;span class="s2"&gt;                System.out.println("&lt;/span&gt;&lt;span class="nv"&gt;Holy&lt;/span&gt; &lt;span class="nv"&gt;Moly&lt;/span&gt; &lt;span class="s-Atom"&gt;we&lt;/span&gt; &lt;span class="s-Atom"&gt;made&lt;/span&gt; &lt;span class="s-Atom"&gt;it&lt;/span&gt; &lt;span class="s-Atom"&gt;through&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
            &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Eric Manzitti</dc:creator><pubDate>Thu, 21 Sep 2017 14:53:33 -0000</pubDate><guid>https://sourceforge.net80704128b89a7be97c93db6ca702046b116600a8</guid></item><item><title>Error converting PDF file unit test.</title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/1ffb9804/?limit=25#7740</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I'm a bit confused by "CommandException: magick". This suggests a new version of IM where all commands like "convert" are symlinks to "magick". Could you please check this? You could try to replace the symlinks with hardlinks. The magick-command behaves differently depending on the name it is called with, but im4java already resolves to the real name while searching for the command so this information gets lost.&lt;/p&gt;
&lt;p&gt;Bernhard&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Bernhard Bablok</dc:creator><pubDate>Sun, 29 Jan 2017 13:16:39 -0000</pubDate><guid>https://sourceforge.netc514b7cb9390e53eede3211002f1c1ae5de6ed5d</guid></item><item><title>Error converting PDF file unit test.</title><link>https://sourceforge.net/p/im4java/discussion/910877/thread/1ffb9804/?limit=25#a2bd</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;I'm getting the following error message when running my code from a Spring WebMvcTest.  The code works correctly when called from my application, just not in the test.  Code is:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;    &lt;span class="s-Atom"&gt;private&lt;/span&gt; &lt;span class="s-Atom"&gt;byte&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="nf"&gt;createThumbnailImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;byte&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="s-Atom"&gt;imageData&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;String&lt;/span&gt; &lt;span class="s-Atom"&gt;imageFormat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="s-Atom"&gt;throws&lt;/span&gt; &lt;span class="nv"&gt;ImageConversionException&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="nv"&gt;ByteArrayOutputStream&lt;/span&gt; &lt;span class="s-Atom"&gt;os&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;ByteArrayOutputStream&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="s-Atom"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nv"&gt;InputStream&lt;/span&gt; &lt;span class="o"&gt;is&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;ByteArrayInputStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;imageData&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

            &lt;span class="nv"&gt;IMOperation&lt;/span&gt; &lt;span class="s-Atom"&gt;op&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;IMOperation&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"-"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;thumbnail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;THUMBNAIL_SIZE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

            &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;imageFormat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;equalsIgnoreCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;PDF_FILE_EXTENSION&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;background&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"white"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;alpha&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"remove"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="s-Atom"&gt;create&lt;/span&gt; &lt;span class="nv"&gt;PNG&lt;/span&gt; &lt;span class="s-Atom"&gt;image&lt;/span&gt; &lt;span class="s-Atom"&gt;output&lt;/span&gt; &lt;span class="s-Atom"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;PDF&lt;/span&gt; &lt;span class="s-Atom"&gt;files&lt;/span&gt;
                &lt;span class="s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;PNG_FILE_EXTENSION&lt;/span&gt;&lt;span class="s-Atom"&gt;+&lt;/span&gt;&lt;span class="s2"&gt;":-"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="s-Atom"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addImage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;imageFormat+&lt;/span&gt;&lt;span class="s2"&gt;":-"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;

            &lt;span class="nv"&gt;Pipe&lt;/span&gt; &lt;span class="s-Atom"&gt;pipeIn&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;Pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;is&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s-Atom"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nv"&gt;Pipe&lt;/span&gt; &lt;span class="s-Atom"&gt;pipeOut&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;Pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s-Atom"&gt;os&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

            &lt;span class="nv"&gt;ConvertCmd&lt;/span&gt; &lt;span class="s-Atom"&gt;convert&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;ConvertCmd&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="s-Atom"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setInputProvider&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;pipeIn&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="s-Atom"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setOutputConsumer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;pipeOut&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="s-Atom"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;op&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="nf"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;IOException&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nv"&gt;IM4JavaException&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nv"&gt;InterruptedException&lt;/span&gt; &lt;span class="s-Atom"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

            &lt;span class="nf"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getMessage&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Cannot run program \"convert\""&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nv"&gt;String&lt;/span&gt; &lt;span class="s-Atom"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Imagemagick not found or not installed."&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="nv"&gt;LOG&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="s-Atom"&gt;throw&lt;/span&gt; &lt;span class="s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;ImageConversionException&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;

            &lt;span class="s-Atom"&gt;throw&lt;/span&gt; &lt;span class="s-Atom"&gt;new&lt;/span&gt; &lt;span class="nv"&gt;ImageConversionException&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s-Atom"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getMessage&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="s-Atom"&gt;return&lt;/span&gt; &lt;span class="s-Atom"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toByteArray&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;I can run the same test for an image file (.jpg) and it converts correctly, both in the test and when the application is running.  When converting for a PDF the command passed to IM is:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;- -thumbnail 255 -background white -alpha remove png:-&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The command is the same both when running the application and when calling the same code from a unit test.&lt;/p&gt;
&lt;p&gt;I have IM and Ghostscript installed locally.  Could there be a problem with IM calling Ghostscript, or a Pipe wrapper problem from a unit test?  Appreciate any help.  Thanks,&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Tom</dc:creator><pubDate>Wed, 25 Jan 2017 01:00:20 -0000</pubDate><guid>https://sourceforge.netdc410724d5659f42068ba8f65c0563847e08e97d</guid></item></channel></rss>