我看到过几个示例,使用Java BufferedImage
对象将压缩的JPG图像写入文件,但是否可能在不写入文件的情况下执行JPG压缩?也许可以通过像这样写入ByteArrayOutputStream
来实现?
ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam();
jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
jpgWriteParam.setCompressionQuality(0.7f);
ImageOutputStream outputStream = createOutputStream();
jpgWriter.setOutput(outputStream);
IIOImage outputImage = new IIOImage(image, null, null);
// in this example, the JPG is written to file...
// jpgWriter.write(null, outputImage, jpgWriteParam);
// jpgWriter.dispose();
// ...but I want to compress without saving, such as
ByteArrayOutputStream compressed = ???
IIOImage
并不会“做”什么,它只包含你想要写入的数据。如果你想要了解更多信息,我建议你阅读 API 文档或跟随教程。 :-) - Harald KMemoryCacheImageOutputStream
,供您参考。 - JeffThompson