<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Alfresco 3.4 and ImageMagick 6.6.7 (on Windows) - SOLUTION in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/alfresco-3-4-and-imagemagick-6-6-7-on-windows-solution/m-p/277221#M230351</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Problem:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;After upgrading from ImageMagick 6.3.6 (the version bundled with Alf 3.4c) to 6.6.7 all ImageMagick operations fail with "Magick: no decode delegate for this image format" message&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Initial env:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Out of the box Alfresco 3.4c install on Windows XP - all works fine, image conversions (jpeg to gif thumbnail and jpeg to jpeg resize) execute correctly&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Changes:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt; a) Install ImageMagick 6.6.7-1-Q16&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; b) rename convert.exe to imconvert.exe&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; c) change "img.root=c:/ImageMagick-6.6.7-Q16" and "img.exe =${img.root}/imconvert" in alfresco-global.properties&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Analysis:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;The code within Alfresco that executes imconvert can be reduced to&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;&lt;BR /&gt;package com.easypress.alfresco.repo.content.transform.magick;&lt;BR /&gt;&lt;BR /&gt;import java.io.File;&lt;BR /&gt;import java.io.IOException;&lt;BR /&gt;import java.nio.charset.Charset;&lt;BR /&gt;&lt;BR /&gt;import org.alfresco.util.exec.RuntimeExec.InputStreamReaderThread;&lt;BR /&gt;&lt;BR /&gt;public class ImageMagickContentTransformerWorkerTest {&lt;BR /&gt;&amp;nbsp; private static final String IMG_ROOT = "c:/ImageMagick-6.6.7-Q16";&lt;BR /&gt;&amp;nbsp; private static final String IMG_DYN&amp;nbsp; = IMG_ROOT;&lt;BR /&gt;&amp;nbsp; private static final String IMG_EXE&amp;nbsp; = IMG_ROOT + "/imconvert";&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; public static void main(String[] args) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] commandToExecute = new String[] {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IMG_EXE, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "c:/temp/ImageMagickContentTransformerWorker_source_test.jpg[0]", &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "-thumbnail", &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "50%", &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "c:/temp/ImageMagickContentTransformerWorker_output_test.jpg"};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] processProperties = new String[] {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "MAGICK_HOME=" + IMG_ROOT, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "DYLD_LIBRARY_PATH=" + IMG_DYN, &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "LD_LIBRARY_PATH=" + IMG_DYN};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; File processDirectory = null;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Any ONE of these will solve the problem&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // String[] processProperties = null;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // String[] processProperties = new String[] { "PATH=" + IMG_ROOT};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // File processDirectory = new File(IMG_ROOT);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Process process = Runtime.getRuntime().exec(commandToExecute, processProperties, processDirectory);&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStreamReaderThread stdOutGobbler = new InputStreamReaderThread(process.getInputStream(), Charset.defaultCharset());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InputStreamReaderThread stdErrGobbler = new InputStreamReaderThread(process.getErrorStream(), Charset.defaultCharset());&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stdOutGobbler.start();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stdErrGobbler.start();&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; process.waitFor();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (InterruptedException e) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stdErrGobbler.addToBuffer(e.toString());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stdOutGobbler.waitForCompletion();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stdErrGobbler.waitForCompletion();&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("out: " + stdOutGobbler.getBuffer());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("err: " + stdErrGobbler.getBuffer());&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOException e) {}&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;}&lt;BR /&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;and as this can be executed outside of the Alfresco environment and produce exactly the same result the fundamental problem is how Alfresco is setting up the Runtime.exec() method.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The problem is that, for Windows, Alfresco is incompletely replacing the process environment.&amp;nbsp; While ImageMagick may use the MAGICK_HOME property to &lt;/SPAN&gt;&lt;EM&gt;locate&lt;/EM&gt;&lt;SPAN&gt; decoders, it uses the standard Windows process to &lt;/SPAN&gt;&lt;EM&gt;load&lt;/EM&gt;&lt;SPAN&gt; decoders and that requires the associated .dll to be either on the path or in the current directory.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;Solution:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;As given in the code above, there are three possible solutions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; a) specify the process directory to be ${img.root} (via the processDirectory property to the RuntimeExec bean)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; b) add PATH=${img.root} to the process properties (via the processProperties property map of the RuntimeExec bean)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; c) remove the specified process properties and let the process inherit the environment settings (this will only work if ImageMagick has been installed and added to the PATH env)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;See &lt;/SPAN&gt;&lt;A href="http://wiki.alfresco.com/wiki/Alfresco_Subsystems" rel="nofollow noopener noreferrer"&gt;http://wiki.alfresco.com/wiki/Alfresco_Subsystems&lt;/A&gt;&lt;SPAN&gt; for how to over-ride subsystem configuration&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope this helps someone!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 25 Mar 2011 11:18:08 GMT</pubDate>
    <dc:creator>easypress</dc:creator>
    <dc:date>2011-03-25T11:18:08Z</dc:date>
    <item>
      <title>Alfresco 3.4 and ImageMagick 6.6.7 (on Windows) - SOLUTION</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/alfresco-3-4-and-imagemagick-6-6-7-on-windows-solution/m-p/277221#M230351</link>
      <description>Problem:After upgrading from ImageMagick 6.3.6 (the version bundled with Alf 3.4c) to 6.6.7 all ImageMagick operations fail with "Magick: no decode delegate for this image format" messageInitial env&lt;IMG id="smileysurprised" class="emoticon emoticon-smileysurprised" src="https://migration33.stage.lithium.com/i/smilies/16x16_smiley-surprised.png" alt="Smiley Surprised" title="Smiley Surprised" /&gt;ut of the box Alfresco 3.4c install on Windows XP - all works fine, image conversions (jpeg to gif t</description>
      <pubDate>Fri, 25 Mar 2011 11:18:08 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/alfresco-3-4-and-imagemagick-6-6-7-on-windows-solution/m-p/277221#M230351</guid>
      <dc:creator>easypress</dc:creator>
      <dc:date>2011-03-25T11:18:08Z</dc:date>
    </item>
    <item>
      <title>Re: Alfresco 3.4 and ImageMagick 6.6.7 (on Windows) - SOLUTION</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/alfresco-3-4-and-imagemagick-6-6-7-on-windows-solution/m-p/277222#M230352</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thank you ! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The processProperties for Runtime.getRuntime().exec(…) is needed also under Linux.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Apr 2011 11:37:26 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/alfresco-3-4-and-imagemagick-6-6-7-on-windows-solution/m-p/277222#M230352</guid>
      <dc:creator>dranakan</dc:creator>
      <dc:date>2011-04-04T11:37:26Z</dc:date>
    </item>
    <item>
      <title>Re: Alfresco 3.4 and ImageMagick 6.6.7 (on Windows) - SOLUTION</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/alfresco-3-4-and-imagemagick-6-6-7-on-windows-solution/m-p/277223#M230353</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I have solved this problem by installing ImageMagick version with static libraries.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jul 2011 08:34:40 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/alfresco-3-4-and-imagemagick-6-6-7-on-windows-solution/m-p/277223#M230353</guid>
      <dc:creator>alekseiv</dc:creator>
      <dc:date>2011-07-13T08:34:40Z</dc:date>
    </item>
    <item>
      <title>Re: Alfresco 3.4 and ImageMagick 6.6.7 (on Windows) - SOLUTION</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/alfresco-3-4-and-imagemagick-6-6-7-on-windows-solution/m-p/277224#M230354</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I have solved this problem by installing ImageMagick version with static libraries.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Indeed, this fixed my problem too!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1. Install the ImageMagick with "static libraries" anywhere on your system.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2. Try to run ImageMagick directly from command line, e.g.:&lt;/SPAN&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;convert C:\temp\test.jpg -resize 120 C:\temp\test_b.jpg&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;3. specify the path + exe to your ImageMagick-installation in alfresco-global.properties&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;img.root=&amp;lt;YourImageMagickInstallationDirectory&amp;gt;&lt;BR /&gt;img.exe=${img.root}/convert&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;SPAN&gt;and restart Alfresco.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jan 2012 15:20:23 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/alfresco-3-4-and-imagemagick-6-6-7-on-windows-solution/m-p/277224#M230354</guid>
      <dc:creator>bmeyns</dc:creator>
      <dc:date>2012-01-09T15:20:23Z</dc:date>
    </item>
  </channel>
</rss>

