Я хочу перезаписать сжатие изображения, например:
- read 4.jpg
- output 4.jpg
То же имя для img и сжатияно этот код не работает по одному и тому же имени.Библиотека javax.imageio.ImageIO
.
public static void main(String[] args) throws IOException {
File inputJpegFile = new File("D:\\4.jpg");
File outputFile = new File("D:\\4.jpg");
ImageInputStream imgInStrm = ImageIO.createImageInputStream(inputJpegFile);
ImageOutputStream imgOutStrm = ImageIO.createImageOutputStream(outputFile);
// set up reader/writer to wrap around files
ImageReader imgRdr = ImageIO.getImageReadersByFormatName("jpg").next();
ImageWriter imgWrtr = ImageIO.getImageWritersByFormatName("jpg").next();
imgRdr.setInput(imgInStrm);
imgWrtr.setOutput(imgOutStrm);
// read in JPEG into IIOImage container
IIOImage iioImg = new IIOImage(imgRdr.read(0), null, imgRdr.getImageMetadata(0));
// set compression level
JPEGImageWriteParam writerParam = new JPEGImageWriteParam(null);
writerParam.setOptimizeHuffmanTables(true);
writerParam.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);
writerParam.setCompressionQuality(0.6f);
// write out JPEG
imgWrtr.write(null, iioImg, writerParam);
// clean up
imgInStrm.close();
imgOutStrm.close();
imgWrtr.dispose();
imgRdr.dispose();
}