如何让im4java使用BuffereImage
我使用1.4.0版从Java访问功能。它可以很好地处理文件之间的图像 有一节介绍如何使用缓冲图像而不是将输出写入文件,还有一个测试(TestCase13)演示如何使用缓冲图像作为输出。但是,当我使用缓冲映像运行任何操作时,我会收到一个如何让im4java使用BuffereImage,java,imagemagick,jmagick,im4java,Java,Imagemagick,Jmagick,Im4java,我使用1.4.0版从Java访问功能。它可以很好地处理文件之间的图像 有一节介绍如何使用缓冲图像而不是将输出写入文件,还有一个测试(TestCase13)演示如何使用缓冲图像作为输出。但是,当我使用缓冲映像运行任何操作时,我会收到一个org.im4java.core.CommandException声明:没有给定格式的ImageReader 我尝试了许多不同的方法(包括添加jai_imageio.jar以提供额外的格式),但似乎没有任何效果。显示问题的基本测试代码(基于im4java.jar的T
org.im4java.core.CommandException
声明:没有给定格式的ImageReader
我尝试了许多不同的方法(包括添加jai_imageio.jar
以提供额外的格式),但似乎没有任何效果。显示问题的基本测试代码(基于im4java.jar的TestCase13)是:
运行此操作会引发以下错误:
org.im4java.core.CommandException: java.lang.IllegalStateException: no ImageReader for given format
at org.im4java.core.ImageCommand.run(ImageCommand.java:219)
at test.groovy.services.ImageManipulation.JavaBufferedImageManipulationTest.shouldWorkBufferedImageTest(JavaBufferedImageManipulationTest.java:31)
Caused by: java.lang.IllegalStateException: no ImageReader for given format
at org.im4java.core.Stream2BufferedImage.consumeOutput(Stream2BufferedImage.java:82)
at org.im4java.process.ProcessStarter.processOutput(ProcessStarter.java:276)
at org.im4java.process.ProcessStarter.access$200(ProcessStarter.java:54)
at org.im4java.process.ProcessStarter$2.call(ProcessStarter.java:433)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.lang.Thread.run(Thread.java:745)
错误发生在convertCmd.run
行上,但是,问题似乎在于将outputConsumer设置为stream2BufferedImage。我该如何解决这个问题?im4java和BuffereImage是否存在已知错误?有比导出到临时文件然后将其读回BuffereImage更好的解决方法吗?我知道JMagick(作为im4java的替代品),但由于其他原因,我没有发现它是一个好的解决方案
提前感谢您的帮助或想法。在本例中,我将输入源作为缓冲图像,输出也作为缓冲图像。我希望这能帮助你
public static void main(String... args) throws Exception {
IMOperation op = new IMOperation();
op.addImage();
op.resize(350)
op.addImage("png:-")
BufferedImage images = ImageIO.read(new File("image.jpg"));
// set up command
ConvertCmd convert = new ConvertCmd();
Stream2BufferedImage s2b = new Stream2BufferedImage();
convert.setOutputConsumer(s2b);
// run command and extract BufferedImage from OutputConsumer
convert.run(op,images);
BufferedImage img = s2b.getImage();
}
在这个例子中,我将输入源作为缓冲图像,输出也作为缓冲图像。我希望这能帮助你
public static void main(String... args) throws Exception {
IMOperation op = new IMOperation();
op.addImage();
op.resize(350)
op.addImage("png:-")
BufferedImage images = ImageIO.read(new File("image.jpg"));
// set up command
ConvertCmd convert = new ConvertCmd();
Stream2BufferedImage s2b = new Stream2BufferedImage();
convert.setOutputConsumer(s2b);
// run command and extract BufferedImage from OutputConsumer
convert.run(op,images);
BufferedImage img = s2b.getImage();
}