Why not simply scale the image you receive:
BufferedImage img = robot.createScreenCapture(allScreenBounds);
// scaledWidth and scaledHeight are the new smaller image size
Image scaledImg = img.getScaledInstance(scaledWidth, scaledHeight,
BufferedImage.SCALE_AREA_AVERAGING);
If you need the new image to be a BufferedImage, then:
BufferedImage scaledBufferedImg = new BufferedImage(scaledWidth, scaledHeight,
BufferedImage.TYPE_INT_ARGB);
Graphics g = scaledBufferedImg.getGraphics();
g.drawImage(scaledImg, 0, 0, null);
g.dispose();