ImageIOでJpegの品質を上げる
ImageIOで画像をjpeg形式で保存すると、通常は結構劣化してしまう。(2000年代のwebレベル?)
// 通常の保存処理
ImageIO.write(image, "jpeg", new File("image.jpg"));
以下の方法を使用すれば最高品質で保存が可能になる。
// 最高品質で保存処理
try (FileImageOutputStream output = new FileImageOutputStream(new File("image.jpg"))) {
ImageWriter imageWriter = ImageIO.getImageWritersByFormatName("jpeg").next();
ImageWriteParam imageWriteParam = writeImage.getDefaultWriteParam();
imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
imageWriteParam.setCompressionQuality(1.0f);
imageWriter.setOutput(output);
imageWriter.write(null, new IIOImage(image, null, null), imageWriteParam);
imageWriter.dispose();
}