将 ImageWriter 输出设置为 ObjectOutputStream

Set ImageWriter output to ObjectOutputStream

我正在尝试使用此方法压缩图像:Setting jpg compression level with ImageIO in Java

解决方案工作正常,但我使用 ObjectOutputStream 而不是 FileImageOutputStream,当我将 ObjectOutputStream 设置为编写器输出时,我得到一个 java.lang.IllegalArgumentException: Illegal output type! 异常。我需要使用 ObjectOutputStream。

这非常有效ImageIO.write(img, "jpg", outstream);

当您直接调用 ImageIO.write(img, "jpg", outstream);, the method will invoke ImageIO.createImageOutputStream(outstream) and pass the result to the ImageWriter. When you call setOutput 时,您必须自己调用。

ImageWriter w = ImageIO.getImageWritersByFormatName("jpg").next();
w.setOutput(ImageIO.createImageOutputStream(outputStream));
w.write(image);