我正在使用 imagemagick 构建具有多个图层的 PSD。这适用于我使用 CLI 命令convert 1.png 1.png 2.png test.psd
。(额外的 1.png 在那里,因为 PSD 的第一层是所有层的展平结果)
我想使用 im4java 来完成,而不是将图像实际保存到磁盘(使用 InputStream)。这应该可以通过使用InputStream 初始化的输入管道来实现。但是,它只适用于一个输入图像。如果我有几个,我不知道如何将它们全部作为输入传递给进程的标准输入。
我尝试使用 连接我的图像输入流java.io.SequenceInputStream
,但这会导致错误:
org.im4java.core.CommandException:转换:此图像格式没有解码委托 `'@error/constitute.c/ReadImage/501。
我的代码:
FileInputStream imageStream1 = new FileInputStream("1.png");
FileInputStream imageStream2 = new FileInputStream("2.png");
InputStream concatStreams = new SequenceInputStream(imageStream1, imageStream2);
IMOperation op = new IMOperation();
// "-" means to read the image from stdin
op.addImage("-"); // the first, "dummy" image
op.addImage("-"); // 1.png
op.addImage("-"); // 2.png
// output in PSD format to stdout
op.addImage("psd:-");
ConvertCmd cmd = new ConvertCmd();
Pipe pipeIn = new Pipe(concatStreams, null);
cmd.setInputProvider(pipeIn);
// omitted cmd.setOutputConsumer code
cmd.run(op);