CommmandLineProcess : ImageMagick | Community
Skip to main content
Murali89
Level 2
Oct 16, 2015 2:29 AM UTC
Solved

CommmandLineProcess : ImageMagick

I am trying to use CommmandLineProcess  step to flip an image using imageMagick commands. I have installed the imageMagick software on my machine and able to execute the commands on command prompt and operate on the images on my system, But when i configure a command in AEM CommandLineProcess step in a workflow and execute the workflow for an image i get the below error

 

09.06.2015 16:14:51.433 *INFO* [JobHandler: /etc/workflow/instances/2015-06-09/model_109813702252312:/content/dam/geometrixx/portraits/yolanda_huggins.jpg] com.day.cq.dam.core.process.CommandLineProcess execute: executing command line [convert C:\Users\MMANJA~1\AppData\Local\Temp\cqdam3684189622130797275.tmp/yolanda_huggins.jpg -flip C:\Users\MMANJA~1\AppData\Local\Temp\cqdam3684189622130797275.tmp/yolanda_huggins.flipped.jpg] for asset [/content/dam/geometrixx/portraits/yolanda_huggins.jpg].
09.06.2015 16:14:51.461 *ERROR* [JobHandler: /etc/workflow/instances/2015-06-09/model_109813702252312:/content/dam/geometrixx/portraits/yolanda_huggins.jpg] com.day.cq.dam.core.process.CommandLineProcess execute: failed to execute command [convert C:\Users\MMANJA~1\AppData\Local\Temp\cqdam3684189622130797275.tmp/yolanda_huggins.jpg -flip C:\Users\MMANJA~1\AppData\Local\Temp\cqdam3684189622130797275.tmp/yolanda_huggins.flipped.jpg] for asset [/content/dam/geometrixx/portraits/yolanda_huggins.jpg]:  org.apache.commons.exec.ExecuteException: Process exited with an error: 4(Exit value: 4)
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:346)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:149)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:136)
    at com.day.cq.dam.core.process.CommandLineProcess.execute(CommandLineProcess.java:235)
    at com.day.cq.workflow.compatibility.CQWorkflowProcessRunner.execute(CQWorkflowProcessRunner.java:93)
    at com.adobe.granite.workflow.core.job.HandlerBase.executeProcess(HandlerBase.java:208)
    at com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:139)
    at org.apache.sling.event.jobs.JobUtil$1.run(JobUtil.java:378)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

 

Below is the command

convert ${directory}/${filename} -flip ${directory}/${basename}.flipped.jpg

 

I have attached the screenshot of the dialog properties i have configured

I have verified the permissions for the folder it looks fine. Any help is appreciated.

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Lokesh_Shivalingaiah
Lokesh_ShivalingaiahAccepted solution
Level 10
Oct 16, 2015 2:29 AM UTC

9 replies

krassimirb24890
New Participant
Oct 24, 2017 5:17 PM UTC

Hi bsloki

I'm trying to get it working on Linux server. Are there any specifics. I could not find a single article for ImageMagick in AEM on Linux. Can you please guide me to any documentation available. Thanks a lot.

Translate
New Participant
Jul 9, 2017 2:08 AM UTC

Got it working by using the full path for the convert command of ImageMagick installtion directory "C:\Program Files\ImageMagick-6.8.9-Q16\convert.exe"

Translate
New Participant
Jul 9, 2017 1:41 AM UTC

Hi Murali,

Was this issue resolved? I am getting the same error (org.apache.commons.exec.ExecuteException: Process exited with an error: 4(Exit value: 4)) and not able to figure out the root cause.

Translate
New Participant
Aug 30, 2016 7:41 AM UTC

Hi,

 

I faced similar issue. This is because 'convert' command is not getting executed through AEM even if it executes from your command prompt. 

For this you need to specify the installation folder of ImageMagick to make it execute.

"C:\Program Files\ImageMagick-6.8.9-Q16\convert.exe" -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png.

or

C:\Program Files\ImageMagick-6.8.9-Q16\convert -define jpeg:size=319x319 ${filename} -thumbnail 319x319 cq5dam.thumbnail.319.319.png.

Translate
Lokesh_Shivalingaiah
Lokesh_ShivalingaiahAccepted solution
Level 10
Oct 16, 2015 2:29 AM UTC
Level 2
Oct 16, 2015 2:29 AM UTC

Hi Murli,

   did you got this issue resolved? I am facing the same issue and i am getting below error''java.io.IOException: Cannot run program "convert" (in directory "/var/folders/fv/m83vzmp15yx61zk8dphr9qhc0000gp/T/cqdam7524535527327291654.tmp"): error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
    at java.lang.Runtime.exec(Runtime.java:617)
    at org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
    at org.apache.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:246)
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:302)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:149)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:136)
    at com.day.cq.dam.core.process.CommandLineProcess.execute(CommandLineProcess.java:235)
    at com.day.cq.workflow.compatibility.CQWorkflowProcessRunner.execute(CQWorkflowProcessRunner.java:93)
    at com.adobe.granite.workflow.core.job.HandlerBase.executeProcess(HandlerBase.java:184)
    at com.adobe.granite.workflow.core.job.JobHandler.process(JobHandler.java:232)
    at org.apache.sling.event.impl.jobs.JobConsumerManager$JobConsumerWrapper.process(JobConsumerManager.java:512)
    at org.apache.sling.event.impl.jobs.queues.JobRunner.run(JobRunner.java:205)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:185)
    at java.lang.ProcessImpl.start(ProcessImpl.java:130)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)
    ... 15 common frames omitted

 

Pavan

Translate
Lokesh_Shivalingaiah
Level 10
Oct 16, 2015 2:29 AM UTC

basically, I think you need to replace ${filename} with the actual filename and similarly for basename and directory as per the example given in the above article 

Translate
Murali89
Murali89Author
Level 2
Oct 16, 2015 2:29 AM UTC

I referred to the same link to implement this and followed the same steps and ended up getting this issue.

Translate
Murali89
Murali89Author
Level 2
Oct 16, 2015 2:29 AM UTC

${filename} $ {directory} are implicit that is the reason in the stack trace it picks up the image path correctly as highlighted ib bold below

[convert C:\Users\MMANJA~1\AppData\Local\Temp\cqdam3684189622130797275.tmp/yolanda_huggins.jpg -flip C:\Users\MMANJA~1\AppData\Local\Temp\cqdam3684189622130797275.tmp/yolanda_huggins.flipped.jpg] for asset [/content/dam/geometrixx/portraits/yolanda_huggins.jpg]: 

 

Even if i specify absolute path of an image on my machine it throws same error.

Translate