im4java转换使用管道



我正在尝试im4java样例TestCase10处理管道。

https://github.com/Widen/im4java/blob/master/src/org/im4java/test/TestCase10.java

 
public class im4Test {
    public static void main(String[] args) throws Exception {
        IMOperation op = new IMOperation();
        op.addImage("-");                   // read from stdin
        op.addImage("tif:-");               // write to stdout in tif-format
        // set up pipe(s): you can use one or two pipe objects
        FileInputStream fis = new FileInputStream("ABC.png");
        FileOutputStream fos = new FileOutputStream("ABC.tif");
        // Pipe pipe = new Pipe(fis,fos);
        Pipe pipeIn  = new Pipe(fis,null);
        Pipe pipeOut = new Pipe(null,fos);
        // set up command
        ConvertCmd convert = new ConvertCmd();
        convert.setInputProvider(pipeIn);
        convert.setOutputConsumer(pipeOut);
        convert.run(op);
        fis.close();
        fos.close();
    }
}
 

面对下面的例外,任何关于正在发生的事情的线索都是非常感谢的。


        Exception in thread "main" org.im4java.core.CommandException: java.io.IOException: The pipe is being closed
        at org.im4java.core.ImageCommand.run(ImageCommand.java:219)
        at com.cvc.image.im4Test.main(im4Test.java:28)
    Caused by: java.io.IOException: The pipe is being closed
        at java.io.FileOutputStream.writeBytes(Native Method)
        at java.io.FileOutputStream.write(FileOutputStream.java:326)
        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
        at java.io.FilterOutputStream.close(FilterOutputStream.java:158)
        at org.im4java.process.ProcessStarter.processInput(ProcessStarter.java:261)
        at org.im4java.process.ProcessStarter.waitForProcess(ProcessStarter.java:423)
        at org.im4java.process.ProcessStarter.run(ProcessStarter.java:313)
        at org.im4java.core.ImageCommand.run(ImageCommand.java:215)
        ... 1 more
 

Note: Running on windows, and using ImageMagick.

Found the issue, on debugging further. Posting it as answer for the benefit of others.

Windows platform has its own 'convert' command and it is interfering.

Ecplise IDE is picking windows command, even though I made sure that ImageMagick 'convert' command is in the system path and accessible in command line and have restarted Eclipse.

To make it work, had to explicitly set ImageMagick search path.

ConvertCmd.setSearchPath('imageMagickBinDirPath')

相关内容

  • 没有找到相关文章

最新更新