Я хочу перезаписать сжатие изображения - PullRequest
0 голосов
/ 03 июля 2019

Я хочу перезаписать сжатие изображения, например:

  1. read 4.jpg
  2. 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();
}
...