Using this simple code you can reduce the quality of an image and change its size as well:
BufferedImage originalImage = ImageIO.read(new File("in.jpg"));
double scale = 0.5; // 50 %
int newW = (int)(originalImage.getWidth() scale);
int newH = (int)(originalImage.getHeight() scale);
BufferedImage resizedImage = new BufferedImage(newW, newH, originalImage.getType());
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, newW, newH, null);
g.dispose();
ImageWriter writer = (ImageWriter) ImageIO.getImageWritersBySuffix("jpeg").next();
File file = new File("out.jpeg");
writer.setOutput(ImageIO.createImageOutputStream(file));
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.5f); //half
writer.write(null, new IIOImage(resizedImage, null, null),param);